2012-07-06 3 views
0

Configuration

J'ai installé nginx 1.2.2 et PHP 5.4.4. J'ai configuré PHP avec nginx fonctionnant comme FastCGI..user.ini php avec nginx et sous-répertoire

nginx extrait de configuration:

location ~ \.php$ { 
    root   E:/Websites/localhost; 
    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME E:/Websites/localhost/$fastcgi_script_name; 
    include  fastcgi_params; 
} 

J'ai un certain nombre de sites virtuels locaux en cours d'exécution sur le même système. Pour personnaliser chacune des exigences j'ai créé le fichier .user.ini dans chaque dossier racine des sites qui, selon la documentation PHP, devrait également s'appliquer sur les sous-dossiers.

Veuillez noter que ceci est un environnement de développement et n'est pas en ligne. J'ai donc la possibilité de personnaliser un certain nombre de choses.

Problème

Quand j'accéder à un site du navigateur, il fonctionne très bien à moins que je ne plonge pas dans certains sous-dossier. Il semble que .user.ini ne fonctionne pas dans les sous-répertoires - du moins dans ma configuration.

Comme par document PHP (http://www.php.net/manual/en/configuration.file.per-user.php):

En plus du fichier php.ini principal, les analyses de PHP pour les fichiers INI dans chaque répertoire , commençant par le répertoire du fichier PHP demandé, et son chemin jusqu'à la racine du document en cours

SOS

quelqu'un at-il configuré .user. ini sous nginx - vous demander s'il vous plaît aidez-moi.

Note: Quelqu'un a signalé un bug en 2009: https://bugs.php.net/bug.php?id=50374

Plus d'informations (EDIT)

phpinfo() dit (dans la racine, ainsi que dans des sous-dossiers):
* API Server: CGI/FastCGI
* user_ini.filename: .user.ini (local, ainsi que maître)

php_sapi_name() dit cg i-fcgi

Ces valeurs sont présentes dans phpinfo() à partir du dossier racine et des sous-répertoires. Donc, il n'y a pas de différence dans PHPInfo().

Une confirmation supplémentaire qu'il fonctionne comme CGI/FastCGI est que le dossier racine prend des configurations de .user.ini mais pas des sous-dossiers.

// .user.ini 
auto_prepend_file = "E:\Websites\localhost\user.ini.php" 

et

// user.ini.php 
<?php 
printf('Hi from: %s', __FILE__); 
?> 

Cela peut effectivement être un bug, mais a tout le monde configuré PHP avec nginx de cette manière et n'a pas fait face à ce problème. Demande de partager les numéros de version et la plateforme dans ce cas.

+0

Il semble que ce soit vraiment un bug. –

+0

Oui Bruni on dirait que c'est encore un bug après avoir été signalé il y a plus de 2 ans. Mais je repose mes espoirs sur les utilisateurs de nginx qui ont peut-être rencontré le même problème. – user1402647

+0

Ce n'est pas un bug. Voir mon message ci-dessous. – Dayo

Répondre

0

Vous n'avez cité que partiellement les documents PHP auxquels vous avez un lien. Il dit également These files are processed only by the CGI/FastCGI SAPI.

Je suppose que vous n'utilisez pas le SAPI CGI/FastCGI mais d'autres SAPI ... le SAPI PHP-FPM peut-être?

Comme vous l'avez peut-être déduit de ce qui précède, l'exécution de FastCGI n'équivaut pas à l'utilisation de SAPI CGI/FastCGI. Vous pouvez également exécuter FastCGI en utilisant d'autres SAPI tels que PHP-FPM.

BTW SAPI = API serveur. Vous pouvez rechercher le vôtre dans un fichier phpinfo.

+0

Vous ne savez pas s'il y a une mauvaise configuration ou si c'est juste un bug. Mais ** php_sapi_name() ** renvoie ** cgi-fcgi ** et de plus cela ne fonctionne que dans le dossier racine mais pas dans les sous-répertoires. – user1402647

+0

Le SAPI pour lequel cela fonctionne s'appelle 'CGI/FastCGI'. Regardez dans un fichier phpinfo pour votre fichier précis et pas la sortie php_sapi_name(). Puisque vous utilisez très probablement php-fpm, vous pouvez essayer d'utiliser les instructions de showerheadsuk à hotmail dot com sur votre page de documentation liée. – Dayo

+0

BTW. Voir: http://stackoverflow.com/questions/10965807/how-do-i-get-php-5-3-8-to-read-a-user-ini-file – Dayo

0

Ceci est en fait un problème beaucoup plus important que nginx, mais une solution permanente est disponible. La méthode alternative ini_set d'ajouter des options de directive a des limitations significatives donc ce n'est pas vraiment une bonne solution à long terme. Merci. http://www.ait-pro.com/aitpro-blog/4349/misc-projects/wordpress-tips-tricks-fixes/php5-3-x-php5-4-x-user-ini-file-does-not-work-known-php5-3-x-user-ini-fastcgi-wordpress-zend-issue/

+0

Vous devez divulguer votre affiliation avec des sites externes. –

+2

@BeauGrantham - J'ai regardé à travers l'aide et la FAQ de Stackoverflow et je n'ai trouvé aucune information d'aide sur "révéler l'affiliation avec des sites externes". Pouvez-vous clarifier exactement quelle est la règle pour cela? Merci. –