2013-07-19 1 views
0

J'ai lutté pendant un certain temps, regardant à travers Google sur les idées et les solutions de mon problème, mais je ne peux toujours pas comprendre celui-ci. J'ai un serveur Apache2 utilisant mod_fastcgi, et j'utilise Symfony2. Tout semble fonctionner correctement, les fichiers CSS et JS et les fichiers PHP sont tous correctement analysés. Le problème, cependant, est avec les fichiers image, tels que les fichiers .png (même le favicon.ico n'est pas reconnu). Accès direct au fichier me donne Accès refusé, tout en utilisant un fichier à l'intérieur d'un modèle .twig donne l'erreur suivante dans error.log apache:Apache2 avec mod_fastcgi et Symfony2 n'identifie pas correctement les fichiers image

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) 

Mes configurations actuelles sont:

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> 

configuration Mon VirtualHost:

<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 est un lien symbolique du dossier de mon Symfony web, contenant app.php, app_dev.php, .htaccess, ainsi que les liens vers mes ensembles, javascripts et fichiers css.

Je ne sais pas vraiment où le problème est, car la plupart de ce que j'ai lu sur le sujet concerne Nginx + fastcgi. Je suppose que c'est le paramétrage de tout le dossier web à utiliser avec fastcgi, mais je n'en suis pas vraiment sûr. Est-ce que quelqu'un a des suggestions? Merci.

Répondre

0

Ajouter à votre configuration php-fpm pour résoudre le problème:

security.limit_extensions = FALSE 
+0

merci s pour la suggestion, mais j'ai déjà essayé cela et j'ai une erreur: 'FastCGI: server" /home/{...}/www/fastcgi/mina/php5.external/bundles/minaportfolio/images/fon1. pn g "stderr: Message PHP: PHP Erreur d'analyse: erreur de syntaxe, début inattendu (T_STRING) dans /home/{...}/www/mina/src/Mina/Bundle/PortfolioBundle/Resources/public/images/fon 1.png on line' – vanxa

+0

votre serveur tente d'analyser l'image comme php ... assurez-vous que seuls les fichiers php sont transférés. Je pensais que vous parliez de l'environnement de développement où php sert les images si use_controller est défini sur true dans symfony2. – nifr

0

OK, j'ai réussi à corriger moi-même. C'est mon incompréhension des configurations fastcgi qui a créé le problème, et après this link, j'ai corrigé le problème.

Voici les deux fichiers, révisés:

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> 

Ici, php5.fcgi est le script suivant:

#!/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 

config hôte virtuel:

<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> 
Questions connexes