【问题标题】:Wordpress http 500 error on install安装时出现 Wordpress http 500 错误
【发布时间】:2018-08-30 00:29:46
【问题描述】:

我知道有很多关于此的帖子,但其中大多数似乎是在 wordpress 网站的生命周期中很晚 - 我的内容发生在 install.php 上,所以我猜它更基础问题。

我的设置:

Windows 10 (1803)
Nginx (1.15.2)
PHP (7.2.9 - None Thread Safe)
MySQL (8.0 - Community)

文件结构 - (如果有任何霸凌)

nginx - \Development\nginx\nginx-1.15.2\
PHP   - \Development\php\php-7.2.9-nts-Win32-VC15-x64\

nginx 正在从它的/html/ 目录提供文件,wordpress 在一个子目录html/wordpress

MySQL 创建了一个名为“wordpress”的空白数据库,可通过命令行访问,HeidiSQL 应用程序使用 wordpress 站点的凭据。

我知道 php 作为基本的 <?php phpinfo(); ?> 文件输出 PHP 信息,访问 http://127.0.0.1:8080/wordpress/wp-admin/setup-config.php 会启动安装过程,并显示请求数据库信息的屏幕。但是提交到:

http://127.0.0.1:8080/wordpress/wp-admin/setup-config.php?step=2

这会引发 500 错误,空白屏幕。

在 nginx 访问日志中我可以看到:

127.0.0.1 - - [28/Aug/2018:08:56:20 +0100] "POST /wordpress/wp-admin/setup-config.php?step=2 HTTP/1.1" 500 5 "http://127.0.0.1:8080/wordpress/wp-admin/setup-config.php?step=1&language=en_GB" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0"

但是 nginx 错误日志中没有任何内容 - 实际上什么也没有,它充满了丢失的图标行,但我创建了一个空白行来减少噪音。

wp-config.php 使用数据库信息和define('WP_DEBUG', true); 行进行硬编码时,访问install.php 会给出错误500 错误-但没有其他信息。

知道问题是什么吗? 可能是文件权限问题,我假设 nginx 以我的 windows 用户身份运行 - 这是一个管理员。

更新:

Windows php 没有附带 php.ini 文件(为什么!!!)所以我从 http://www.reallylinux.com/docs/php.ini 抓取了一个并将其放在 eh php 根目录中 - 这有效,我可以打开错误日志记录

现在这给了我一些工作 - 因为我已经找到了问题的路线:

[error] 2200#6728: *9 FastCGI sent in stderr: "PHP Fatal error:  
UncaughtError: Call to undefined function mysql_connect() in \nginx\nginx-1.15.2\html\wordpress\wp-includes\wp-db.php:1564

有人知道为什么 mysql_connect() 是未定义的吗?

更新 2:

问题的实际路径原因是这个 PHP 错误:

无法使用 Php 7.2.8 (https://bugs.php.net/bug.php?id=76660) 连接到 mysql 8

降级到 PHP 7.2.7,问题就消失了……鉴于已接受答案中所做的更改。

【问题讨论】:

  • 这是一个 500 代码错误。检查您的 PHP 日志文件以了解问题(/var/log/php.log 之类的)
  • @elhostis - 谢谢 - 我检查了 phpinfo() 中的 error_log 设置,但它有 没有值,我检查了 phpinfo() 中的 php.ini 文件位置和它说 C:\windows - 但它不存在......这是有道理的,因为 php 为什么会有写权限来在 C;\windows 中创建该文件......有人知道它应该在哪里吗?

标签: php wordpress nginx http-status-code-500


【解决方案1】:

mysql_connect() 是一个直到 PHP 5.2 才存在的函数,在 PHP 5.5.0 中已被弃用,并在 PHP 7.0.0 中被删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。 Ref: PHP Manual

【讨论】:

  • 谢谢,奇怪的是 Wordpress 说它需要 php 7,但随后在配置中将其内部引用设置为使用 mysqli_connect() 为 false。无论如何翻转了这一点,并修复了 php 没有在正确的目录中查找扩展名的问题 - (windows 的 php 确实需要提供 php.ini 文件!)但现在的问题是:'未捕获的错误:调用未定义的函数 mysqli_init( )' 所以我不能 100% 确定这是路径原因。
  • OK - 将 wordpress 布尔值翻转回来,所以它现在说 private $use_mysqli = false; 似乎 wordpress 需要 mysqli 并且被告知不要使用它......非常奇怪。它不再给我 500 个错误。它仍然不起作用 - 但它显然是一个不同的问题。
  • 你试过用 PHP-PDO 吗,我猜效率更高
  • 我没有尝试太多,直到现在我从未使用过 Wordpress,也没有使用 PHP 超过 10 年,所以现在只是通过基础来感受我的方式......效率是很长的路要走。现在我非常想念 MS .NET WebAPI!
猜你喜欢
  • 1970-01-01
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 2021-02-09
  • 2021-06-19
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多