使用 nginx 执行 php 脚本时遇到问题

使用 nginx 执行 php 脚本时遇到问题

我的 nginx 配置如下

server {
        listen       80;
        server_name  localhost;

        location / {
           root /var/www;
           index index.php index.html;
           autoindex on; 
        }

        location /folder1 {
           root   /var/www/folder1;
           index  index.php index.html index.htm;
           try_files $uri $uri/ index.php?$query_string;
        }

        location /folder2 {
           root   /var/www/folder2;
           index  index.php index.html index.htm;
        }

        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include        fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

上述设置的问题在于我无法执行 php 文件。现在根据我对 nginx 配置规则的理解,当我处于我的 webroot( /) 中时,这是become/var/www的值,因此当我请求become时,这就是 php 脚本的实际路径。但是当我实际转到该 url 时,我收到一条消息,但是当我转到该 url 时,我可以看到页面的 html 输出。所以这意味着 php 的位置块存在问题。$document_root/var/wwwlocalhost/hi.phpfastcgi_param SCRIPT_FILENAME/var/www/hi.phplocalhost/hi.phpFile not found.localhost/hi.html

同样,当我请求localhost/folder1/hi.php成为$document_root时,因为这在位置块/var/www/folder1中被指定为根,所以再次成为。但是当我实际转到网址时,我收到一条消息,但是当我转到网址时,我可以看到页面的 html 输出。所以 php 再次未被执行。folderfastcgi_param SCRIPT_FILENAME/var/www/folder1/hi.phplocalhost/folder1/hi.phpFile not found.localhost/folder1/hi.html

请帮忙?

答案1

您需要root从两个location /folder*块中删除行,并将移动到块root /var/wwwserver,而不是location /块内。这是最常见的nginx 配置错误

相关内容