我正在尝试将在本地环境中运行良好的项目移动到实时共享托管平台上。我的内容都没有出现,所以我开始尝试找到问题所在。我在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: PsrLogNullLogger }
这并没有解决它,所以我完全被困住了。我不知道还能尝试什么。任何帮助将不胜感激。
对于参考,这是我的引导和自动加载文件。
引导.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 DotenvDotenv(__DIR__);
$dotenv->load();
$session = new SymfonyComponentHttpFoundationSessionSession();
$session->start();
供应商/自动加载.php:
<?php
// autoload.php @generated by Composer
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit1975f3b1eb8deeaabd9c59cc0a28694b::getLoader();
谢谢。
您将session.save_path更新为"%kernel.root_dir%/sessions"
这意味着它会将其放入/path/to/your/project/app/sessions
中。通常,应用文件夹是只读的。在默认项目结构中,有一个包含日志和 chache 文件的var/
目录,它还有一个用于会话的文件夹。我建议改用它:"%kernel.root_dir%/../var/sessions"
.您还必须确保 var 目录可由您的 Web 用户写入(通常是 www-data(。由于您使用的是共享主机环境,因此您可能需要登录到提供商的Web UI并在那里找到文件管理工具。如果您仍然无法使其工作,则可能需要更改会话处理程序,例如更改为数据库。使用 PDO 会话存储或 Redis 会话处理程序。