从本地环境迁移到共享主机时出现Symfony错误

时间:2017-04-15 04:42:53

标签: php symfony composer-php

我正在尝试将在我的本地环境中正常工作的项目移动到实时共享托管平台上。我的内容都没出现,所以我开始尝试找到问题所在。我在bootstrap.php页面上遇到500错误,所以我跟踪了错误并收到了这条消息:

Warning: SessionHandler::read(): open(/var/php_sessions/sess_5b4077feb9bf47a70ccde805100ae624, O_RDWR) failed: No such file or directory (2) in /hermes/bosnaweb03b/b700/ipg.briangwaltney/YSC-Main/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/Proxy/SessionHandlerProxy.php on line 61 Warning: SessionHandler::write(): open(/var/php_sessions/sess_5b4077feb9bf47a70ccde805100ae624, O_RDWR) failed: No such file or directory (2) in /hermes/bosnaweb03b/b700/ipg.briangwaltney/YSC-Main/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/Proxy/SessionHandlerProxy.php on line 69

我做了大量的研究,发现了一堆旧的问题,建议你更改app / config / config.yml文件来解决这个问题。该文件在我的目录中不存在,但是config / framework.yml就在那里,所以我做了那些建议的更改。以下是改为:

framework:
    secret: test
    router: { resource: "%kernel.root_dir%/%kernel.test_case%/routing.yml" }
    validation: { enabled: true, enable_annotations: true }
    assets: ~
    csrf_protection: true
    form: true
    test: ~
    default_locale: en
    session:
        handler_id: session.handler.native_file
        save_path: "%kernel.root_dir%/sessions"
    profiler: { only_exceptions: false }

services:
    logger: { class: Psr\Log\NullLogger }

那没有解决它,所以我完全陷入困境。我不知道还有什么可以尝试的。任何帮助将不胜感激。

对于ref,这是我的bootstrap和autoload文件。

bootstrap.php:

<?php

error_reporting(E_ALL);
ini_set('display_errors', '1');

require_once __DIR__ . '/../vendor/autoload.php';
require_once __DIR__ . '/functions.php';
require_once __DIR__ . '/connection.php';



$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();

$session = new \Symfony\Component\HttpFoundation\Session\Session();
$session->start();

供应商/ autoload.php:

<?php

// autoload.php @generated by Composer

require_once __DIR__ . '/composer/autoload_real.php';

return ComposerAutoloaderInit1975f3b1eb8deeaabd9c59cc0a28694b::getLoader();

谢谢。

1 个答案:

答案 0 :(得分:0)

您已将session.save_path更新为"%kernel.root_dir%/sessions",这意味着它会将其放入/path/to/your/project/app/sessions。通常app-folder是只读的。在默认项目结构中,有一个包含日志和chache文件的var/目录,它还有一个会话文件夹。我建议改为使用它:"%kernel.root_dir%/../var/sessions"。您还必须确保您的Web用户可以写入var-directory(通常是www-data)。由于您处于共享托管环境中,因此可能需要登录到提供商的web ui并在那里找到文件管理工具。如果仍然无法使其工作,则可能需要更改会话处理程序,例如到数据库。使用PDO Session StorageRedis session handler