Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用nginx+;php fpm_Php_Nginx_Fastcgi_Subdirectory_Mirror - Fatal编程技术网

使用nginx+;php fpm

使用nginx+;php fpm,php,nginx,fastcgi,subdirectory,mirror,Php,Nginx,Fastcgi,Subdirectory,Mirror,主静态网站(镜像)位于:/home/mirrors/mirror 我正在尝试仅在子目录/home/mirrors/mirror/phpweb/中设置PHP网站。到目前为止,它加载PHP,但是所有的图像、css和url链接都指向/home/mirrors/mirror/filename*,而不是/home/mirrors/mirror/phpweb/filename* 我试过: fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_

主静态网站(镜像)位于:
/home/mirrors/mirror

我正在尝试仅在子目录
/home/mirrors/mirror/phpweb/
中设置PHP网站。到目前为止,它加载PHP,但是所有的图像、css和url链接都指向
/home/mirrors/mirror/filename*
,而不是
/home/mirrors/mirror/phpweb/filename*

我试过:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
但这会导致错误日志显示:

在stderr中发送的FastCGI:“无法打开主脚本: /home/mirrors/mirror/phpweb/phpweb/index.php

最接近工作配置的是使用以下选项设置路径的错误方式:

fastcgi_param SCRIPT_FILENAME /home/mirrors/mirror$fastcgi_script_name;
我忽略了什么?这是整个配置。除了images/css/js没有指向phpweb/目录外,它基本上可以正常工作。我的配置似乎缺少一些行,这些行将允许root/home/mirrors/mirror/phpweb;中的static指向该文件夹

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;
    }
}

更新:这里是更新的配置:

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;
    }
}
其结果是:

警告:包含(/home/mirrors/mirror/include/site.inc):未能 open stream:中没有此类文件或目录 /主页/mirrors/mirror/phpweb/include/prepend.inc,第78行

警告:include():打开失败 “/home/mirrors/mirror/include/site.inc”以供包含 (包括_path='。:/usr/share/php:/usr/share/pear') /主页/mirrors/mirror/phpweb/include/prepend.inc,第78行

警告:包含(/home/mirrors/mirror/include/langchooser.inc):失败 要打开流:中没有这样的文件或目录 /主页/镜像/镜像/phpweb/include/prepend.inc,第81行

警告:include():打开失败 “/home/mirrors/mirror/include/langchooser.inc”以供包含 (包括_path='。:/usr/share/php:/usr/share/pear') /主页/镜像/镜像/phpweb/include/prepend.inc,第81行

警告:包括(/home/mirrors/mirror/include/ip to country.inc): 无法打开流:中没有此类文件或目录 /主页/镜像/镜像/phpweb/include/prepend.inc,第84行

警告:include():打开失败 “/home/mirrors/mirror/include/ip to country.inc”以供纳入 (包括_path='。:/usr/share/php:/usr/share/pear') /主页/镜像/镜像/phpweb/include/prepend.inc,第84行

警告:包含(/home/mirrors/mirror/include/layout.inc):未能 open stream:中没有此类文件或目录 /主页/镜像/镜像/phpweb/include/prepend.inc,第87行

警告:include():打开失败 “/home/mirrors/mirror/include/layout.inc”以供包含 (包括_path='。:/usr/share/php:/usr/share/pear') /主页/镜像/镜像/phpweb/include/prepend.inc,第87行

警告:include(/home/mirrors/mirror/include/last_updated.inc): 无法打开流:中没有此类文件或目录 /主页/镜像/镜像/phpweb/include/prepend.inc,第92行

警告:include():打开失败 “/home/mirrors/mirror/include/last_updated.inc”以供包含 (包括_path='。:/usr/share/php:/usr/share/pear') /主页/镜像/镜像/phpweb/include/prepend.inc,第92行

警告:包含一次(/home/mirrors/mirror/include/releases.inc): 无法打开流:中没有此类文件或目录 /第2行的主页/镜像/镜像/phpweb/include/branchs.inc

警告:include_once():打开失败 “/home/mirrors/mirror/include/releases.inc”以供包含 (包括_path='。:/usr/share/php:/usr/share/pear') /第2行的主页/镜像/镜像/phpweb/include/branchs.inc

警告:包含一次(/home/mirrors/mirror/include/version.inc): 无法打开流:中没有此类文件或目录 /第3行的主页/镜像/镜像/phpweb/include/branchs.inc

警告:include_once():打开失败 “/home/mirrors/mirror/include/version.inc”以供包含 (包括_path='。:/usr/share/php:/usr/share/pear') /第3行的主页/镜像/镜像/phpweb/include/branchs.inc

致命错误:在中调用未定义的函数mirror_setcookie() /第44行的home/mirrors/mirror/phpweb/index.php


以前(本文中粘贴的原始配置)没有php错误和页面加载。但是图像/静态被破坏,如上所述。

root指令指定了物理路径的一部分,该部分以URI为前缀,用于查找物理文件。有关详细信息,请参阅

因此,在您发布的配置中,在我看来,
root
的值在所有三个位置都应该相同:

root /home/mirrors/mirror;
事实上,通常在
服务器
块中指定
指令一次,并允许将其继承到每个位置。例如:

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

谢谢。这是我刚开始做的,但结果是:警告:include(/home/mirrors/mirror/include/site.inc):无法打开流:在/home/mirrors/mirror/phpweb/include/prepend.inc中没有这样的文件或目录,大约有20行。这意味着我必须在PHP提供的代码中手动设置路径()。希望有一种方法可以配置Nginx,这样就不会忽略/phpweb/?只是恢复到您的配置建议,但只显示PHP错误,其中与页面上方的原始配置一样,加载了所有静态和链接,但忽略了/phpweb/:/