迁移到 PHP 7.3 服务器甚至禁用所有插件后,Wordpress 博客遇到技术难题
Wordpress blog with technical difficulties after migrating to a PHP 7.3 server and even disabling all plugins
我正在尝试完成向具有 PHP 7.3 的新服务器的迁移。我来自一台 PHP 5.6 的服务器,我已经成功地将其他 WP 博客从旧服务器迁移到新服务器,没有任何问题。
我看到的错误是带有此错误消息的灰色页面:
The site is experiencing technical difficulties.
因此,在我看来,由于 PHP 7.3 安装不正确而导致的问题。因为它实际上对其他 WP 博客和 Plesk 都非常有效。
我在其他帖子中读到,我的 wp-config.php 文件可能缺少这一行:define('WP_USE_EXT_MYSQL', true);
但事实并非如此。
而且我还在其他地方读到,新服务器可能缺少 nd_mysqli
PHP 扩展名。但事实并非如此。它已启用。我已经停用 mysqli
PHP 扩展。在那之后,我也没有运气重新启动 apache2。
所以...我错过了什么?停用插件也不会使 WP 站点正常工作,这真的很奇怪。为此,我已将 plugins
文件夹重命名为 plugins_old
并且我一直看到相同的错误消息:(
我忘了显示整个错误日志:
AH01071: Got error 'PHP message: PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /var/www/vhosts/mywpsite.com/httpdocs/wp-includes/wp-db.php:1645
Stack trace:\n#0 /var/www/vhosts/mywpsite.com/httpdocs/wp-includes/wp-db.php(639): wpdb->db_connect()
#1 /var/www/vhosts/mywpsite.com/httpdocs/wp-includes/load.php(427): wpdb->__construct('secret...', 'other_secret', 'anothe......', 'localhost')
#2 /var/www/vhosts/mywpsite.com/httpdocs/wp-settings.php(120): require_wp_db()
#3 /var/www/vhosts/mywpsite.com/httpdocs/wp-config.php(82): require_once('/var/www/vhosts...')
#4 /var/www/vhosts/mywpsite.com/httpdocs/wp-load.php(37): require_once('/var/www/vhosts...')
#5 /var/www/vhosts/mywpsite.com/httpdocs/wp-blog-header.php(13): require_once('/var/www/vhosts...')
#6 /var/www/vhosts/mywpsite.com/httpdocs/index.php(17): require('/var/www/vhosts...')
#7 {main}\n thrown in /var/www/vhosts/mywpsite.com/...'
澄清一下,数据库、用户和密码都是正确的。
PHP 已安装模块
php -m
[PHP Modules]
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
imap
ionCube Loader
json
libxml
mbstring
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
sodium
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured)
更新
现在新服务器中的所有其他 WP 网站都无法正常工作。我有 PHP 7.2 和 PHP 7.3。不过,所有网站都使用 PHP 7.3。但是 Prestashop 网站保持 运行 流畅。
我已经尝试在 Plesk 中设置 PHP 7.2,结果相同。
错误都一样Call to undefined function mysql_connect
。
更新 2
禁用 mysqli
似乎会使事情变得更糟。因为它为所有 WP 博客生成 Call to undefined function mysql_connect
。即使是永远不会奏效的那个。
所以我会保持 mysqli
扩展程序处于启用状态。
最后它是一个问题的组合,但我最终将问题解决了一个 WP 插件,它可能没有 PHP 7.3(可能 7.2 也没有,因为我尝试过它)支持.插件文件夹是 cystats.
所以在开始时不知何故与这个 WP 博客不兼容,这与启用 mysql 扩展有关。关闭它后,它仍然不起作用,但似乎我没有重新启动 Apache,所以我看到了旧的 Call to undefined function mysql_connect()
错误。
后来,所有 WP 博客都出了问题(禁用 mysqli 扩展),最后,在单独破坏原始 WP 博客之后,我意识到错误不一样。现在是:
Got error 'PHP message: PHP Fatal error: Uncaught Error: Call to undefined function mysql_error() in /var/www/vhosts/mywpsite.com/httpdocs/wp-content/plugins/cystats/includes/cystats.class.php:1455
所以最后一切都解决了,显然WP与PHP 7.3兼容,并且必须禁用mysql
扩展才能很好地使用它。一些插件可能不是最新的,这就是为什么它们不能与 PHP 7.3 一起工作以及为什么它们在 PHP 5.6.
上工作的原因
因此,在将 WP 博客迁移到新设置后,如果您不了解插件可能会破坏迁移。
感谢您的评论,他们也很有帮助。
正如我在这里读到的那样 Wordpress Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /wp-includes/wp-db.php:1570 似乎添加这一行:define('WP_USE_EXT_MYSQL', true);
会使插件错误消失,但是如果我设置这个定义。
我正在尝试完成向具有 PHP 7.3 的新服务器的迁移。我来自一台 PHP 5.6 的服务器,我已经成功地将其他 WP 博客从旧服务器迁移到新服务器,没有任何问题。
我看到的错误是带有此错误消息的灰色页面:
The site is experiencing technical difficulties.
因此,在我看来,由于 PHP 7.3 安装不正确而导致的问题。因为它实际上对其他 WP 博客和 Plesk 都非常有效。
我在其他帖子中读到,我的 wp-config.php 文件可能缺少这一行:define('WP_USE_EXT_MYSQL', true);
但事实并非如此。
而且我还在其他地方读到,新服务器可能缺少 nd_mysqli
PHP 扩展名。但事实并非如此。它已启用。我已经停用 mysqli
PHP 扩展。在那之后,我也没有运气重新启动 apache2。
所以...我错过了什么?停用插件也不会使 WP 站点正常工作,这真的很奇怪。为此,我已将 plugins
文件夹重命名为 plugins_old
并且我一直看到相同的错误消息:(
我忘了显示整个错误日志:
AH01071: Got error 'PHP message: PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /var/www/vhosts/mywpsite.com/httpdocs/wp-includes/wp-db.php:1645
Stack trace:\n#0 /var/www/vhosts/mywpsite.com/httpdocs/wp-includes/wp-db.php(639): wpdb->db_connect()
#1 /var/www/vhosts/mywpsite.com/httpdocs/wp-includes/load.php(427): wpdb->__construct('secret...', 'other_secret', 'anothe......', 'localhost')
#2 /var/www/vhosts/mywpsite.com/httpdocs/wp-settings.php(120): require_wp_db()
#3 /var/www/vhosts/mywpsite.com/httpdocs/wp-config.php(82): require_once('/var/www/vhosts...')
#4 /var/www/vhosts/mywpsite.com/httpdocs/wp-load.php(37): require_once('/var/www/vhosts...')
#5 /var/www/vhosts/mywpsite.com/httpdocs/wp-blog-header.php(13): require_once('/var/www/vhosts...')
#6 /var/www/vhosts/mywpsite.com/httpdocs/index.php(17): require('/var/www/vhosts...')
#7 {main}\n thrown in /var/www/vhosts/mywpsite.com/...'
澄清一下,数据库、用户和密码都是正确的。
PHP 已安装模块
php -m
[PHP Modules]
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
imap
ionCube Loader
json
libxml
mbstring
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
sodium
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured)
更新
现在新服务器中的所有其他 WP 网站都无法正常工作。我有 PHP 7.2 和 PHP 7.3。不过,所有网站都使用 PHP 7.3。但是 Prestashop 网站保持 运行 流畅。
我已经尝试在 Plesk 中设置 PHP 7.2,结果相同。
错误都一样Call to undefined function mysql_connect
。
更新 2
禁用 mysqli
似乎会使事情变得更糟。因为它为所有 WP 博客生成 Call to undefined function mysql_connect
。即使是永远不会奏效的那个。
所以我会保持 mysqli
扩展程序处于启用状态。
最后它是一个问题的组合,但我最终将问题解决了一个 WP 插件,它可能没有 PHP 7.3(可能 7.2 也没有,因为我尝试过它)支持.插件文件夹是 cystats.
所以在开始时不知何故与这个 WP 博客不兼容,这与启用 mysql 扩展有关。关闭它后,它仍然不起作用,但似乎我没有重新启动 Apache,所以我看到了旧的 Call to undefined function mysql_connect()
错误。
后来,所有 WP 博客都出了问题(禁用 mysqli 扩展),最后,在单独破坏原始 WP 博客之后,我意识到错误不一样。现在是:
Got error 'PHP message: PHP Fatal error: Uncaught Error: Call to undefined function mysql_error() in /var/www/vhosts/mywpsite.com/httpdocs/wp-content/plugins/cystats/includes/cystats.class.php:1455
所以最后一切都解决了,显然WP与PHP 7.3兼容,并且必须禁用mysql
扩展才能很好地使用它。一些插件可能不是最新的,这就是为什么它们不能与 PHP 7.3 一起工作以及为什么它们在 PHP 5.6.
因此,在将 WP 博客迁移到新设置后,如果您不了解插件可能会破坏迁移。
感谢您的评论,他们也很有帮助。
正如我在这里读到的那样 Wordpress Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /wp-includes/wp-db.php:1570 似乎添加这一行:define('WP_USE_EXT_MYSQL', true);
会使插件错误消失,但是如果我设置这个定义。