CentOS 8 Nginx 与 PHP 7.4.8,PHP 未执行并给出内部服务器错误
Posted
技术标签:
【中文标题】CentOS 8 Nginx 与 PHP 7.4.8,PHP 未执行并给出内部服务器错误【英文标题】:CentOS 8 Nginx with PHP 7.4.8, PHP not excuted and give internal server Error 【发布时间】:2020-11-17 12:26:14 【问题描述】:我是 CentOS 的新手,我用 Virtualmin 安装了 LEMP 堆栈,我遇到了一个连线问题,当我执行一些使用我手动添加的模块的 php 代码时,如 Chilkat 或 ionecube 加载程序,PHP 给出内部服务器错误 500,屏幕为空在浏览器上,但是当我使用 SSH 命令运行此文件时
php play.php
它正确执行并在屏幕上显示结果,所以不确定 nginx 和 PHP-CGI 可能是什么问题?在我手动安装了 LEMP 堆栈后,我安装了 Virtualmin,并且有我的 NGINX Conf 文件
server_names_hash_bucket_size 128;
server
server_name mydomain.com www.mydomain.com;
listen ip;
root /home/mydomain/public_html;
index index.html index.htm index.php;
access_log /var/log/virtualmin/mydomain.com_access_log;
error_log /var/log/virtualmin/mydomain.com_error_log;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME /home/mydomain/public_html$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT /home/mydomain/public_html;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param HTTPS $https;
location ~ \.php$
try_files $uri =404;
fastcgi_pass unix:/var/php-nginx/159588147640444.sock/socket;
listen ip:443 default ssl;
ssl_certificate /home/mydomain/ssl.cert;
ssl_certificate_key /home/mydomain/ssl.key;
fastcgi_read_timeout 60;
提前致谢。
【问题讨论】:
比较php -i
在shell中的输出,和phpinfo()
在浏览器中的输出。特别注意“加载的配置文件”部分。
浏览器加载的 PHP 命令提供相同的目录和文件加载的配置文件 => /etc/php.ini 和相同的附加 INI 文件列表
【参考方案1】:
我通过使用解决问题
fastcgi_pass unix:/run/php-fpm/www.sock;
而不是在我使用 LEMP 堆栈设置 Virtualmin 时添加。
fastcgi_pass unix:/var/php-nginx/159588147640444.sock/socket;
我不知道它为什么起作用以及它们之间有什么区别,是 unix:/var/php-nginx/159588147640444.sock/socket;坠毁还是什么? 而旧的只适用于普通的 PHP 页面,但它不能执行模块或类似的东西,它会给出 500 错误。 最后一件事是我先安装 LEMP 堆栈,然后添加 Virtualmin 和 LEMP 堆栈,所以也许我安装了 2 个 PHP 版本?不确定,我这样做是为了可以使用 PHP 7.4.8,因为 Virtualmin LEMP 堆栈是 PHP 7.2 附带的
【讨论】:
以上是关于CentOS 8 Nginx 与 PHP 7.4.8,PHP 未执行并给出内部服务器错误的主要内容,如果未能解决你的问题,请参考以下文章
centos 8 yum 默认安装nginx php 重启nginx服务,报错 403 404
Zend Opcache 不缓存所有文件(CentOS 6.7 + Nginx 1.8.1 + PHP 7 + Laravel 5.1)
centos编译安装php5.6.20+nginx1.8.1+mysql5.6.17