2016-05-31 2 views
1

Le principal site Web statique (miroir) est situé dans: /home/mirrors/mirrorservice PHP à partir d'un sous-répertoire en utilisant nginx + php-fpm

Je suis en train de site PHP configuration que dans le sous-répertoire /home/mirrors/mirror/phpweb/. Jusqu'à présent, il charge PHP, mais toutes les images, liens css et url pointer vers /home/mirrors/mirror/filename* au lieu de /home/mirrors/mirror/phpweb/filename*

J'ai essayé avec:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 

Mais que les résultats dans les journaux d'erreur démontrant:

FastCGI sent in stderr: "Unable to open primary script: /home/mirrors/mirror/phpweb/phpweb/index.php

le plus proche de config de travail est la mauvaise façon de définir le chemin avec:

fastcgi_param SCRIPT_FILENAME /home/mirrors/mirror$fastcgi_script_name; 

Qu'est-ce que je néglige? Voici la config entière. Fondamentalement cela fonctionne sauf que les images/css/js ne sont pas pointées vers le répertoire phpweb /. Ma config semble manquer certaines lignes qui vont permettre la statique à l'intérieur de root/home/mirrors/mirror/phpweb; pour pointer vers ce dossier.

server { 
    listen  80; 
    listen  443 ssl http2; 
    server_name mirrors.domain.com; 
    if ($scheme = http) { 
     return 301 https://$http_host$request_uri; 
    } 

    location/{ 
     root /home/mirrors/mirror; 
     index index.html index.htm; 
     include /home/mirrors/Nginx-Fancyindex-Theme/fancyindex.conf; 
     } 

    location /phpweb { 
     root /home/mirrors/mirror/phpweb; 
     index /phpweb/index.php; 
     } 


    location ~ /phpweb/.*\.php$ { 
     root /home/mirrors/mirror/phpweb; 
#  try_files $uri =404; 
#  try_files $uri $uri/ =404; 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME /home/mirrors/mirror$fastcgi_script_name; 
     include fastcgi_params; 
    } 

    location ~ /\.ht { 
     deny all; 
    } 
} 

Here's where I found a config example.

MISE À JOUR: config est ici mise à jour:

server { 
    listen  80; 
    listen  443 ssl http2; 
    server_name mirrors.domain.com; 
    root /home/mirrors/mirror; 
    if ($scheme = http) { 
     return 301 https://$http_host$request_uri; 
    } 

    location/{ 
     index index.html index.htm; 
     include /home/mirrors/Nginx-Fancyindex-Theme/fancyindex.conf; 
     } 

    location /phpweb { 
     index /phpweb/index.php; 
     } 


    location ~ /phpweb/.*\.php$ { 
     try_files $uri =404; 
#  try_files $uri $uri/ =404; 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
#  fastcgi_param SCRIPT_FILENAME /home/mirrors/mirror/phpweb$fastcgi_script_name; 
     include fastcgi_params; 
    } 

    location ~ /\.ht { 
     deny all; 
    } 
} 

qui se traduit par:

Warning: include(/home/mirrors/mirror/include/site.inc): failed to open stream: No such file or directory in /home/mirrors/mirror/phpweb/include/prepend.inc on line 78

Warning: include(): Failed opening '/home/mirrors/mirror/include/site.inc' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /home/mirrors/mirror/phpweb/include/prepend.inc on line 78

Warning: include(/home/mirrors/mirror/include/langchooser.inc): failed to open stream: No such file or directory in /home/mirrors/mirror/phpweb/include/prepend.inc on line 81

Warning: include(): Failed opening '/home/mirrors/mirror/include/langchooser.inc' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /home/mirrors/mirror/phpweb/include/prepend.inc on line 81

Warning: include(/home/mirrors/mirror/include/ip-to-country.inc): failed to open stream: No such file or directory in /home/mirrors/mirror/phpweb/include/prepend.inc on line 84

Warning: include(): Failed opening '/home/mirrors/mirror/include/ip-to-country.inc' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /home/mirrors/mirror/phpweb/include/prepend.inc on line 84

Warning: include(/home/mirrors/mirror/include/layout.inc): failed to open stream: No such file or directory in /home/mirrors/mirror/phpweb/include/prepend.inc on line 87

Warning: include(): Failed opening '/home/mirrors/mirror/include/layout.inc' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /home/mirrors/mirror/phpweb/include/prepend.inc on line 87

Warning: include(/home/mirrors/mirror/include/last_updated.inc): failed to open stream: No such file or directory in /home/mirrors/mirror/phpweb/include/prepend.inc on line 92

Warning: include(): Failed opening '/home/mirrors/mirror/include/last_updated.inc' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /home/mirrors/mirror/phpweb/include/prepend.inc on line 92

Warning: include_once(/home/mirrors/mirror/include/releases.inc): failed to open stream: No such file or directory in /home/mirrors/mirror/phpweb/include/branches.inc on line 2

Warning: include_once(): Failed opening '/home/mirrors/mirror/include/releases.inc' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /home/mirrors/mirror/phpweb/include/branches.inc on line 2

Warning: include_once(/home/mirrors/mirror/include/version.inc): failed to open stream: No such file or directory in /home/mirrors/mirror/phpweb/include/branches.inc on line 3

Warning: include_once(): Failed opening '/home/mirrors/mirror/include/version.inc' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /home/mirrors/mirror/phpweb/include/branches.inc on line 3

Fatal error: Call to undefined function mirror_setcookie() in /home/mirrors/mirror/phpweb/index.php on line 44

précédemment (config d'origine collé dans ce post) il nous ne les erreurs PHP et les charges de la page. Mais les images/statiques ont été brisées comme décrit ci-dessus.

Répondre

1

La directive root spécifie la partie du chemin physique qui est préfixée à l'URI pour trouver le fichier physique. Voir this document pour plus de détails.

Ainsi, dans la configuration que vous avez publié, il me semble que la valeur de root doit être le même dans les trois endroits:

root /home/mirrors/mirror; 

En fait, il est fréquent de préciser la directive root une fois dans la server bloquer et lui permettre d'être hérité dans chaque emplacement. Par exemple:

root /home/mirrors/mirror; 
location/{ ... } 
location /phpweb { ... } 
location ~ \.php$ { ... } 
+0

Merci. C'est ce que j'ai eu au début, mais il en résulte: Attention: include (/home/mirrors/mirror/include/site.inc): impossible d'ouvrir le flux: Aucun fichier ou répertoire dans/home/mirrors/mirror/phpweb/include/prepend.inc Environ 20 de ces lignes. Ce qui signifierait que je devrais définir manuellement le chemin dans le code fourni par PHP (http://php.net/mirroring.php). Espérons qu'il y a un moyen de configurer Nginx pour que le/phpweb/ne soit pas omis? Juste retourné à votre suggestion de configuration, mais seulement les erreurs PHP montrent, où comme avec la config originale au-dessus de la page charge mais toutes les statistiques et les liens omettent/phpweb /. : / – Hayden