首页 > 解决方案 > Nginx 不执行 php

问题描述

我在几个网站上使用 Nginx。第一次使用它并不太高兴(Apache 在我的情况下不起作用)。我正在尝试将 PHP 用于需要它的新项目。我有 PHP 7.3 FPM。测试, phpinfo(); 确实有效,但是在添加这个项目(openCAD)时,index.php 似乎是空白的。

我试着穿上 MyBB 看看它是否执行,它根本没有,只是一个空白页。

这是我的 nginx 配置

server {

        root /var/www/mywebsite.com/;
        index index.php index.html index.htm index.nginx-debian.html;

        server_name mywebsite.com www.mywebsite.com;



         location / {
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
                fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include fastcgi_params;
        }

        location ~ /\.ht {
                deny all;
        }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/mywebsite.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mywebsite.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot



}server {
    if ($host = www.mywebsite.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = mywebsite.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot



    listen 80;
    listen [::]:80;


    server_name mywebsite.com www.mywebsite.com;
    return 404; # managed by Certbot




}



server {
    if ($host = www.appeal.mywebsite.com) {
        return 301 https://mywebsite.com/appeal;
    } # managed by Certbot


    if ($host = appeal.mywebsite.com) {
        return 301 https://mywebsite.com/appeal;
    } # managed by Certbot


    listen 80 ;
    listen [::]:80 ;
    server_name www.appeal.mywebsite.com appeal.mywebsite.com;
    return 404; # managed by Certbot




}

server {


    if ($host = www.cad.mywebsite.com) {
        return 301 https://mywebsite.com/cad;
    } # managed by Certbot


    if ($host = cad.mywebsite.com) {
        return 301 https://mywebsite.com/cad;
    } # managed by Certbot


    listen 80 ;
    listen [::]:80 ;
    server_name www.cad.mywebsite.com cad.mywebsite.com;
    return 404; # managed by Certbot




}


这是尝试访问 MyBB 的错误日志

2019/08/20 15:48:11 [error] 23516#23516: *71 FastCGI sent in stderr: "PHP message: PHP Warning:  require_once(/var/www/mywebsite.com/php/inc/init.php): failed to open stream: No such file or directory in /var/www/mywebsite.com/php/global.php on line 20PHP message: PHP Fatal error:  require_once(): Failed opening required '/var/www/mywebsite.com/php/inc/init.php' (include_path='.:/usr/share/php') in /var/www/mywebsite.com/php/global.php on line 20" while reading response header from upstream, client: 70.44.50.53, server: mywebsite.com, request: "GET /php/index.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.3-fpm.sock:", host: "mywebsite.com"

标签: phpnginxfastcgi

解决方案


根据您的错误日志,mybb 正在尝试在 中查找其文件/var/www/mywebsite.com/php/,但您root的设置为/var/www/mywebsite.com/. 所以看起来你没有正确设置它。如果您保持root原样,则需要确保 mybb 的文件夹(如incadmin等)是/var/www/mywebsite.com/.


推荐阅读