2013-03-15 36 views
4

我已經將我的Symfony2項目部署到了​​我的開發服務器,並且想運行開發環境。Symfony2 app.php工作,但不是app_dev.php

一切運行良好,如果我使用/app.php但如果我嘗試app_dev.php我得到一個404錯誤:

請求的URL /app_dev.php此服務器上找到。

下面是我的.htaccess文件的一個副本:

<IfModule mod_rewrite.c> 
    Options +FollowSymlinks 
    RewriteEngine On 

    # Explicitly disable rewriting for front controllers 
    RewriteRule ^app_dev.php - [L] 
    RewriteRule ^app.php - [L] 

    RewriteCond %{REQUEST_FILENAME} !-f 

    # Change below before deploying to production 
    #RewriteRule ^(.*)$ app.php [QSA,L] 
    RewriteRule ^(.*)$ app_dev.php [QSA,L] 
</IfModule> 

它工作正常,我的本地機器上,只是沒有我的開發服務器上,任何想法,爲什麼?

我/高速緩存和/ logs目錄都具有777個權限並通過www數據均擁有:這些目錄內

drwxrwxrwx+ 4 www-data www-data 4096 Mar 15 11:46 cache 
drwxrwxrwx+ 2 www-data www-data 4096 Mar 15 11:05 logs 

開發和生產線是完全一樣的。

+0

您是否嘗試從服務器本身或本地計算機打開開發服務器中的開發環境? – 2013-03-15 12:20:18

+0

我正在瀏覽從本地計算機上託管在開發服務器上的開發環境(app_dev.php) – user1961082 2013-03-15 12:39:34

回答

7

檢查你的app_dev.php它有一個限制,即拒絕其他計算機訪問開發環境,而不是服務器本身。

這是出於安全原因,如果您部署到生產服務器並且用戶可以訪問dev env,那麼他/她可以知道很多關於您的應用程序的信息。

// This check prevents access to debug front controllers that are deployed by accident to production servers. 
// Feel free to remove this, extend it, or make something more sophisticated. 
if (isset($_SERVER['HTTP_CLIENT_IP']) 
    || isset($_SERVER['HTTP_X_FORWARDED_FOR']) 
    || !in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1')) 
) { 
    header('HTTP/1.0 403 Forbidden'); 
    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.'); 
} 

您必須將您的IP添加到該陣列,或刪除整個事情(我不會推薦)。

一定要記住將dev變量傳遞給AppKernel。 $kernel = new AppKernel('dev', true);

+0

謝謝@ xr09。我有3個外部服務器,開發,分期和生產,你會推薦我在開發服務器上使用開發環境嗎? – user1961082 2013-03-15 13:03:50

+0

@ user1961082在你的開發服務器上沒問題(畢竟是這樣做的),但請記住設置部署規則以避免生產故障。 – 2013-03-15 13:12:59

+0

so dev env爲本地機器和開發服務器,爲生產測試階段和prod?我使用Capifrano與Capistrano多階段擴展,所以我可以在我的development.rb腳本中設置它,還是必須直接在app_dev.php中進行設置? – user1961082 2013-03-15 13:22:17

相關問題