2013-07-19 59 views
0

我一直在努力尋找一段時間,通過谷歌在我的問題的想法和解決方案,但我仍然無法弄清楚這一點。Apache2與mod_fastcgi和Symfony2沒有正確識別圖像文件

我有一個使用mod_fastcgi的Apache2服務器,並且使用Symfony2。一切似乎工作正常,CSS和JS文件和PHP文件都正確解析。但是,問題在於圖像文件,例如.png文件(即使favicon.ico無法識別)。該文件直接訪問給我拒絕訪問,同時採用了.twig模板中的文件給出了Apache的error.log中以下錯誤:

FastCGI: server "/home/{...}/www/fastcgi/mina/php5.external/favicon.ico" stderr: Access to the script '/home/{...}/www/fastcgi/mina/php5.external/favicon.ico' has been denied (see security.limit_extensions) 

我現在的配置是:

fastcgi.conf :

<IfModule mod_fastcgi.c> 
     FastCgiIpcDir /var/lib/apache2/fastcgi/ 
     AddHandler php5-fcgi .php 
     Action php5-fcgi /cgi-bin/php5.external 
     <Location "/cgi-bin/php5.external"> 
     Order Allow,Deny 
     Allow from All 
     </Location> 
    </IfModule> 

我的虛擬主機配置:

<VirtualHost *:6308> 
    ServerName mina.loc 
    DocumentRoot /home/{...}/www/mina/web 

    # Fast CGI + FPM 
    FastCgiExternalServer /home/{...}/www/fastcgi/mina/php5.external -socket /var/run/php5-fpm.sock 
    Alias /cgi-bin/ /home/{...}/www/fastcgi/mina/ 

    <Directory /> 
     Options FollowSymLinks 
     AllowOverride All 
    </Directory> 

    <Directory /home/{...}/www/mina/web> 
     Options FollowSymlinks 
     AllowOverride All 
     Order allow,deny 
     Allow from all 
    </Directory> 

    Action application/x-httpd-php /cgi-bin/php5 
    ErrorLog /var/log/apache2/error.log 
    LogLevel debug 

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T/%D" extended 
    CustomLog /var/log/apache2/mina_access.log extended 

    # Enable output compression for all text/html files 
    AddOutputFilterByType DEFLATE text/html text/plain 
</VirtualHost> 

其中php5.external是我的Symfony的web文件夾的一個符號鏈接,包含app.php,app_dev.php,.htaccess文件,以及指向我的包,javascript和css文件的鏈接。

我不太確定問題出在哪裏,因爲我在主題上閱讀的大部分內容都是關於Nginx + fastcgi的。我想這是設置整個web文件夾與fastcgi一起使用,但不能確定。有沒有人有什麼建議?謝謝。

回答

0

它添加到你的php-fpm的配置來解決問題:

security.limit_extensions = FALSE 
+0

謝謝這個建議,但我已經嘗試過,我得到了一個stderr:'FastCGI:服務器「/home/{...}/www/fastcgi/mina/php5.external/bundles/minaportfolio/images/fon1。 pn g「stderr:PHP消息:PHP解析錯誤:語法錯誤,意外的'begin'(T_STRING)在/home/{...}/www/mina/src/Mina/Bundle/PortfolioBundle/Resources/public/images/fon 1.png on線路# – vanxa

+0

你的webserver試圖解析圖像爲php ...確保只有php文件正在轉發。我以爲你是在討論如何在symfony2中將use_controller設置爲true的情況下php提供圖像的開發環境。 – nifr

0

OK,我設法解決這個自己。這是我對造成這個問題的fastcgi配置的誤解,並且在this link之後,我解決了這個問題。

這裏有兩個文件,修改爲:

fastcgi.conf

<IfModule mod_fastcgi.c> 
    ScriptAlias /cgi-bin/ "/home/{...}/www/fastcgi/" 

    AddHandler php5-fcgi .php .php5 .php4 
    Action php5-fcgi /cgi-bin/php5.fcgi 

</IfModule> 

這裏,php5.fcgi是下面的腳本:

#!/bin/bash 
# 
# php5.fcgi 
# Shell Script to run PHP5 using mod_fastcgi under Apache 2.x 
# 
#USER=$(/usr/bin/whoami) 
#PHPRC="/var/www/$USER/.cgi-bin/php.ini" 
PHP_FCGI_CHILDREN=5 
#PHP_FCGI_MAX_REQUESTS=1000 
#export PHPRC 
export PHP_FCGI_CHILDREN 
#export PHP_FCGI_MAX_REQUESTS 
exec /usr/bin/php5-cgi 

虛擬主機配置:

<VirtualHost *:6308> 
    ServerName mina.loc 
    DocumentRoot /home/{...}/www/mina/web 

    FastCgiExternalServer /home/{...}/www/fastcgi/php5.fcgi -socket /var/run/php5-fpm.sock 

    <Directory /> 
     Options FollowSymLinks 
     AllowOverride All 
    </Directory> 

    <Directory /home/{...}/www/mina/web> 
     Options FollowSymlinks 
     AllowOverride All 
     Order allow,deny 
     Allow from all 
    </Directory> 

    ErrorLog /var/log/apache2/error.log 
    LogLevel debug 

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T/%D" extended 
    CustomLog /var/log/apache2/mina_access.log extended 

    # Enable output compression for all text/html files 
    AddOutputFilterByType DEFLATE text/html text/plain 
</VirtualHost>