2017-04-15 103 views
1

我試圖將我的本地環境中正常工作的項目遷移到實時共享主機平臺上。我的內容都沒有出現,所以我開始試圖找出問題。我得到我的bootstrap.php頁面上的500錯誤,所以我跟蹤誤差和收到此消息:從本地環境遷移到共享主機時出現Symfony錯誤

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 

我做了一大堆的研究,發現了一堆老問題,建議您更改應用程序/配置/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(); 

謝謝。

回答

0

您將session.save_path更新爲"%kernel.root_dir%/sessions",這意味着它會將其置入/path/to/your/project/app/sessions。通常該應用程序文件夾是隻讀的。在默認的項目結構中有一個var/包含日誌和chache文件的目錄,它也有一個會話文件夾。我會建議使用它:"%kernel.root_dir%/../var/sessions"。你還必須確保var-directory是你的web用戶可寫的(通常是www-data)。由於您處於共享主機環境中,因此您可能需要登錄到您的提供商的網絡用戶界面並在那裏找到文件管理工具。如果仍然無法工作,可能需要更改會話處理程序,例如到數據庫。使用PDO Session StorageRedis session handler

+0

謝謝你的幫助。我將它更改爲/ var/php_sessions文件夾,因爲這是它特別尋找的,它仍然不起作用。我查看了權限並將其設置爲可寫。出於某種原因,會議仍然沒有被寫入。你還有其他建議嗎? 我們走在正確的軌道上;當我註釋掉會話代碼時,該網站的工作減去了需要會話的組件。 –

+0

對不起,我沒有其他想法,一切都指向權限。您可以嘗試在您的腳本中放置'dump(posix_getpwuid(posix_geteuid()))'來確認您爲正確的用戶設置了文件夾權限。 – dbrumann

+0

感謝您繼續提供幫助。我看的越多,我就越想改變錯誤的文件。我似乎無法找到app/config/config.yml文件。這是由Symfony自動創建的嗎? 原諒我的無知。這是我的第一次嘗試。 –