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

Php 从本地环境移动到共享主机时出现Symfony错误,php,symfony,composer-php,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 /

我正在尝试将我在本地环境中运行良好的项目转移到一个实时共享托管平台上。我的所有内容都没有出现,所以我开始尝试找出问题所在。我在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.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();

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

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

谢谢您的帮助。我把它改成了/var/php_sessions文件夹,因为这是它特别想要的,但它仍然不起作用。我已经查看了权限,它被设置为可写。由于某些原因,会话仍然没有编写。你还有别的想法吗?我们走在正确的轨道上;当我注释掉会话代码时,网站当然会减去需要会话的组件。对不起,我没有其他想法,所有内容都指向权限。您可以尝试在脚本中放入
dump(posix_getpwuid(posix_geteuid())
,以确认您为正确的用户设置了文件夹权限。感谢您的持续帮助。我看得越多,就越觉得我更改了错误的文件。我似乎找不到app/config/config.yml文件。这是Symfony自动创建的吗?原谅我的无知。这是我第一次尝试。是的,config.yml在您的symfony项目中。我猜完整路径类似于
/var/www/html/app/config/config.yml
。可能还需要清除缓存目录(基本上是执行
rm-rf/var/www/html/var/*
或从项目根目录中运行
php bin/console cache:clear
)。感谢您的帮助。我把它改成了/var/php_sessions文件夹,因为这是它特别想要的,但它仍然不起作用。我已经查看了权限,它被设置为可写。由于某些原因,会话仍然没有编写。你还有别的想法吗?我们走在正确的轨道上;当我注释掉会话代码时,网站当然会减去需要会话的组件。对不起,我没有其他想法,所有内容都指向权限。您可以尝试在脚本中放入
dump(posix_getpwuid(posix_geteuid())
,以确认您为正确的用户设置了文件夹权限。感谢您的持续帮助。我看得越多,就越觉得我更改了错误的文件。我似乎找不到app/config/config.yml文件。这是Symfony自动创建的吗?原谅我的无知。这是我第一次尝试。是的,config.yml在您的symfony项目中。我猜完整路径类似于
/var/www/html/app/config/config.yml
。也可能是您必须清除缓存目录(基本上执行
rm-rf/var/www/html/var/*
或从项目根目录中运行
php bin/console cache:clear
)。
<?php

// autoload.php @generated by Composer

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

return ComposerAutoloaderInit1975f3b1eb8deeaabd9c59cc0a28694b::getLoader();