Основного статического сайта (зеркало) расположено в здании: /home/mirrors/mirror
Обслуживания PHP из подкаталога с помощью Nginx + PHP-FPM
Я пытаюсь настроить PHP сайта только в подкаталоге /home/mirrors/mirror/phpweb/
. До сих пор он загружает PHP, но все изображения, CSS и URL ссылки указывают на /home/mirrors/mirror/filename*
вместо /home/mirrors/mirror/phpweb/filename*
Я попытался с:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Но это приводит журналы ошибок с указанием:
FastCGI sent in stderr: "Unable to open primary script: /home/mirrors/mirror/phpweb/phpweb/index.php
Ближайших к работе конфигурации является неправильным способом задания пути с:
fastcgi_param SCRIPT_FILENAME /home/mirrors/mirror$fastcgi_script_name;
Что я вижу? Вот вся конфигурация. В основном это работает, за исключением того, что images/css/js не указываются в каталоге phpweb /. Кажется, что в моей конфигурации отсутствуют некоторые строки, которые позволят статике внутри root/home/mirror/mirror/phpweb; чтобы указать на эту папку.
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.
UPDATE: Вот обновленный конфигурации:
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;
}
}
Какие результаты в:
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
Ранее (оригинал конфигурации вставили в этом посте) там мы не php ошибок и загрузки страниц. Но изображения/статика были сломаны, как описано выше.
Спасибо. Это то, что у меня было вначале, но это приводит к: Предупреждение: include (/home/mirrors/mirror/include/site.inc): не удалось открыть поток: нет такого файла или каталога в/home/mirror/mirror/phpweb/include/prepend.inc Около 20 из этих строк. Это означало бы, что мне пришлось бы вручную задать путь в коде, предоставленном PHP (http://php.net/mirroring.php). Надеюсь, есть способ настроить Nginx так, чтобы/phpweb/не был опущен? Просто вернулось к вашему варианту конфигурации, но отображаются только ошибки PHP, где, как и в исходной конфигурации над страницей, загружается, но все статики и ссылки опускают/phpweb /. : / – Hayden