我一直在苦苦挣扎,通过谷歌查看我的问题的想法和解决方案,但我仍然无法弄清楚这一点。
我有一个使用 mod_fastcgi 的 Apache2 服务器,并且正在使用 Symfony2。一切似乎都运行良好,CSS 和 JS 文件以及 PHP 文件都已正确解析。但是,问题在于图像文件,例如 .png 文件(甚至无法识别 favicon.ico)。直接访问该文件会给我Access denied,而在 .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>
wherephp5.external
是指向我的 Symfony 文件夹的符号链接web
,包含app.php
, app_dev.php
,.htaccess
文件,以及指向我的包、javascripts 和 css 文件的链接。
我不太确定问题出在哪里,因为我读过的关于该主题的大部分内容都是关于 Nginx + fastcgi 的。我猜它正在将整个 web 文件夹设置为与 fastcgi 一起使用,但不能确定。有没有人有什么建议?谢谢。