2017-02-23 73 views
1

我使用symfony 3在我的localhost上創建了一個應用程序。東西在我的本地主機上工作得很好。現在我的主要問題是將其移動到我的共享主機(cPanel)。移動文件到public_html文件夾,然後讓我感動的.exebinsrcvar等文件夾的父文件夾(含public_html文件夾中的文件夾),同時留下了「網絡」文件夾中的public_html。然後,我將「web」文件夾(位於public_html文件夾內)中的所有內容移動到public_html文件夾中。讓我有以下目錄結構:Symfony 3中的HTTP 500錯誤

cpanel-root-directory<br> 
---/app<br> 
---/bin<br> 
---/src<br> 
---/tests<br> 
---/var<br> 
---/vendor<br> 
---/public_html<br> 
------/bundles<br> 
------/css<br> 
------/dist<br> 
------/fonts<br> 
------/img<br> 
------/js<br> 
------/plugins<br> 
------/uploads<br> 
------.htaccess<br> 
------app.php<br> 
------app_dev.php<br> 
------apple-touch-icon.png<br> 
------config.php<br> 
------robots.txt<br> 
<br> 

當我去到的域名,我不斷收到這個惱人HTTP 500錯誤。然後在localhost和服務器上(不同時間),我創建了一個全新的symfony項目,將其轉儲到服務器中並獲得了「歡迎來到Symfony 3」頁面。但是,當我試圖放置我的控制器文件並轉到其中定義的路由時(我使用Sensio包中的註釋來定義路由)時,出現HTTP 500錯誤。然後,在工作的默認控制器中,我嘗試定義一個新的操作'testAction'。當我去測試行動的路線,我仍然得到HTTP 500錯誤,但去'/'路線,我看到symfony歡迎頁面正確。

我的客戶已經看到這些東西在我的localhost上運行得非常好,但現在將它移動到服務器是個問題。

+0

UPDATED !!!請檢查www.mydomain,org/app_dev.php,它的工作原理是完美的,但如果我只是去www.mydomain.org,它會給我HTTP 500錯誤。 – yommie

+0

我還必須在app_dev.php文件中註釋掉這些檢查,然後才能使其工作。 /*如果(isset($ _ SERVER [ 'HTTP_CLIENT_IP']) || isset($ _ SERVER [ 'HTTP_X_FORWARDED_FOR']) ||!(in_array(@ $ _ SERVER [ 'REMOTE_ADDR'],['127.0.0.1 '',':: 1'])|| php_sapi_name()==='cli-server') ){ header('HTTP/1.0 403 Forbidden'); exit('您不能訪問此文件,請檢查'.basename(__ FILE__)''以獲取更多信息。'); } */ – yommie

回答

1

如果您可以(有權訪問),只需保持您的網頁目錄,然後使public_html符號鏈接到您的網絡目錄。

如果你需要改變你的「網」目錄的名稱,您需要按照此說明: http://symfony.com/doc/current/configuration/override_dir_structure.html

+0

那個.....得到了同樣的500錯誤。有趣的是,它在www.mydomain.org/app_dev.php(這是我註釋後,檢查它),但我仍然得到HTTP 500錯誤,當我直接去www.mydomain.org – yommie

+0

如果使用/ app_dev.php一切正常,這可能是Dan提到的一個緩存錯誤。繼續並刪除var/cache/prod並重試。 – Strnm

+0

這是否和它仍然是一樣的東西 刪除var/cache + var/logs + var/sessions目錄是否安全? – yommie

0

嗯,我認爲這是因爲,現在,你是否在線,所以你需要清除緩存督促環境:

$ php bin/console cache:clear --env=prod 

但是你說你是一個共享的主機,所以除非你有訪問終端(和運行上面的命令)的一些可用的工具,那麼你需要手動刪除var/cache/prod目錄如果存在。

或者,如果這也不行,我通常不會在所有上傳var/cache + var/logs + var/sessions目錄,但手動創建爲空的,然後讓Symfony的默認情況下完成它的工作與他們。

LE

也許你有另外一個問題,和一個與你已經解決了它的高速緩存。 因此,要檢查是否有什麼問題您的應用程序,使dev模式(app_dev.php),通過修改,在當地,你public_html/app_dev.php文件,並註釋掉這些行:

if (isset($_SERVER['HTTP_CLIENT_IP']) 
    || isset($_SERVER['HTTP_X_FORWARDED_FOR']) 
    || !(in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1']) || php_sapi_name() === 'cli-server') 
) { 
    header('HTTP/1.0 403 Forbidden'); 
    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.'); 
} 

,然後將該文件複製在一個服務器上,然後訪問路線與app_dev.php在前面,並查看是否有錯誤(例如):

http://www.domain.com/app_dev.php/existing_route 

設置完畢後,不要忘了取消註釋裏面app_dev.php代碼,並重新上傳服務器上的文件。

+0

正如你所說刪除了目錄,但它仍然會拋出500錯誤 – yommie

+0

我可以繼續並刪除var/cache + var/logs + var/sessions目錄嗎? – yommie

+0

@yommie我想,無需刪除日誌和會話。我通常只刪除'var/cache /'裏的'prod'目錄。我從來沒有過probs。 –

1

您應該Symfony documentation

檢查本段這部分似乎準確地描述你的問題:

一些共享主機有一個網絡的public_html根目錄。將web目錄從web重命名爲public_html是讓Symfony項目在共享主機上運行的一種方法。另一種方法是將您的應用程序部署到Web根目錄之外的目錄,刪除您的public_html目錄,然後將其替換爲項目中Web的符號鏈接。

+0

做到了這一點,但我仍然得到相同的結果。有趣的壽,它在www.mydomain.org/app_dev.php(這是我註釋後,檢查它),但我仍然得到HTTP 500錯誤,當我直接去www.mydomain.org – yommie

+0

你有沒有檢查你的虛擬主機目標app.php而不是index.php?你有沒有檢查你是在生產環境而不是發展?你嘗試過www.mydomain.org/app.php/yourRoute嗎? –