【问题标题】:can't interpret PHP on RHEL + nginx无法在 RHEL + nginx 上解释 PHP
【发布时间】:2017-11-10 13:15:20
【问题描述】:

我正在执行以下步骤,但似乎无法解释 PHP。我已经做了很多变体,广泛搜索网络并将其展示给朋友:我们不明白我们做错了什么。你能帮忙吗?

  1. 启动 RHEL 7.3 Amazon 免费套餐实例
  2. 在 SSH 中使用 mac 终端应用程序连接

    sudo yum install wget
    wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    sudo rpm -Uvh epel-release-latest-7*.rpm
    sudo yum 安装 nginx
    sudo service nginx 重启
  3. 在 rehl 实例入站规则中打开端口 80

  4. 检查http://[my_instance_name].eu-central-1.compute.amazonaws.com/,它会在Fedora页面显示欢迎使用nginx

  5. 安装php并配置nginx

sudo yum install php-fpm
须藤百胜安装纳米
sudo nano /etc/php.ini,并在文件中设置 cgi.fix_pathinfo=0
sudo nano /etc/nginx/nginx.conf,并将工作进程设置为 4(值为:auto)
sudo nano /etc/nginx/conf.d/default.conf 并具有以下配置:

    服务器 {
        听 80;
        server_name 本地主机;


        地点 / {
            根 /usr/share/nginx/html;
            索引 index.php index.html index.htm;
        }

        error_page 404 /404.html;
        位置 = /404.html {
            根 /usr/share/nginx/html;
        }

        error_page 500 502 503 504 /50x.html;
        位置 = /50x.html {
            根 /usr/share/nginx/html;
        }

        # 将 PHP 脚本传递给在 127.0.0.1:9000 上监听的 FastCGI 服务器
        #
        位置 ~ \.php$ {
            根 /usr/share/nginx/html;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            包括 fastcgi_params;
        }
    }
  1. 配置php
sudo nano /etc/php-fpm.d/www.conf 并确认用户和组是 php-fpm
sudo 服务 php-fpm 重启
sudo nano /usr/share/nginx/html/info.php 包含 phpinfo(); (使用 php 标签,stackoverflow 似乎隐藏了它)
sudo 服务 nginx 重启
sudo chkconfig --levels 235 nginx on
sudo chkconfig --levels 235 php-fpm on
  1. 浏览到http://[my_instance_name].eu-central-1.compute.amazonaws.com/info.php:它下载php文件而不是解释它

  2. 更改步骤/etc/php-fpm.d/www.conf并说用户和组是nginx,重新启动nginx,php文件仍然下载而不是解释

  3. 更改步骤 /etc/nginx/conf.d/default.conf 并说 server_name = [我的实例的 IP],重新启动 nginx,php 文件仍然下载而不是解释

我错过了什么?

【问题讨论】:

标签: php linux nginx


【解决方案1】:

您是否使用简短的 php 打开标签 <? ?如果是这样,请仔细检查您的 php.ini 中的 short_open_tag 是否已启用,因为在某些发行版上默认情况下未启用它。

可能是它实际上 /is/ 工作,但 PHP 没有看到任何“php 代码”。

【讨论】:

    【解决方案2】:

    首先检查 /var/log/nginx 和 /var/log/php-fpm 的日志

    其次,使用netstat -lnp 检查 php-fpm 是否侦听端口 9000

    第三,这是适合我的 nginx 配置:

    location ~ [^/]\.php(/|$) {
                    fastcgi_split_path_info  ^(.+\.php)(/.*)$;
                    try_files $uri =404;
                    fastcgi_pass 127.0.0.1:9000;
                    fastcgi_index index.php;
                    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                    fastcgi_param   PATH_INFO $fastcgi_path_info;
                    include fastcgi_params;
        }
    

    【讨论】:

    • 您好,非常感谢您的帮助。 1. 两个日志文件都是空的(例如,它们甚至不存在)。这正常吗? 2. php-fpm 确实监听:tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 9638/php-fpm: master 3. 用你的替换我的位置指令,重新启动 nginx,仍然下载并且不解释
    猜你喜欢
    • 1970-01-01
    • 2021-07-08
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多