问题:
我正在尝试使用wp cli做一些事情。例如,更新wordpress:
wp core update
Fatal error: Uncaught Error: Call to undefined function mysql_connect() in
path\to\wp-includes\wp-db.php:1564
Stack trace:
# 0 path\to\wp-includes\wp-db.php(592): wpdb->db_connect()
# 1 path\to\wp-includes\load.php(404):
wpdb->__construct(details)
# 2 path\to\public\wp-settings.php(106): require_wp_db()
# 3 phar://path/to/wp-cli.phar/php/WP_CLI/Runner.php(1182): require('C:\\path\\to\\...')
# 4 phar://path/to/wp-cli.phar/php/WP_CLI/Runner.php(1107): WP_CLI\Runner->load_wordpress()
# 5 phar://path/to/wp-cli.phar/php/WP_CLI/Bootstrap/LaunchRunner.php(23): WP_CLI\Runner->start()
# 6 phar://path/to/wp-cli.phar/php/bootstrap.php(75): WP_CLI\Bootstrap\LaunchRunner->process(Object(WP_CLI\Bootstrap\BootstrapState))
# 7 phar://path/to/wp-cli.phar/php/wp-cli.php(23): WP_CLI\bootstrap()
# 8 phar://C:/ in path/to\wp-includes\wp-db.php on line 1564
据我所知,错误在mysql\u connect()中。
我通读了以下答案:
未定义函数mysql\u connect()——这似乎建议下载一些包。我不太愿意这样做,因为我不明白他们在做什么(目前我正在使用mamp运行php,所以我不确定这是否会给我带来更多问题),但这确实向我表明,问题出在php.ini上,它通知了下面尝试的解决方案。
致命错误:调用未定义的函数mysql\u connect()-我认为我的登录详细信息中没有错误(站点本身可以工作),所以这似乎不是问题所在
尝试的解决方案-php.ini
当我通过
wp--info
命令。它打印以下内容:
OS: Windows NT 10.0 build 17134 (Windows 10) i586
Shell: C:\Program Files\Git\usr\bin\bash.exe
PHP binary: C:\MAMP\bin\php\php7.2.1\php.exe
PHP version: 7.2.1
php.ini used:
WP-CLI root dir: phar://wp-cli.phar
WP-CLI vendor dir: phar://wp-cli.phar/vendor
WP_CLI phar path: C:\path\to\public
WP-CLI packages dir:
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 1.5.1
所以这里似乎没有使用php.ini。所以我想我需要解决这个问题。为了做到这一点,我找到了$wp\u cli\u php\u args,我正在尝试将其放入。现在我不是一个编码超级明星,但似乎我需要构建一个bash脚本来充当 Package 器,因为它们在.phar版本中不起作用,所以我结合了在web上找到的两个 Package 器来创建这个:
# !/usr/bin/env sh
dir=$(d=${0%[/\\]*}; cd "$d"; pwd)
# See if we are running in Cygwin by checking for cygpath program
if command -v 'cygpath' >/dev/null 2>&1; then
# Cygwin paths start with /cygdrive/ which will break windows PHP,
# so we need to translate the dir path to windows format. However
# we could be using cygwin PHP which does not require this, so we
# test if the path to PHP starts with /cygdrive/ rather than /usr/bin
if [[ $(which php) == /cygdrive/* ]]; then
dir=$(cygpath -m $dir);
fi
fi
dir=$(echo $dir | sed 's/ /\ /g')
"${WP_CLI_PHP}" $WP_CLI_PHP_ARGS "${dir}/wp-cli.phar" "$@"
当我运行这个时,它会发出各种各样的抱怨。我想我犯了一些基本的错误(我还将“export wp\u cli\u php\u args=/c/mamp/bin/php/php7.2.1/php.ini production”放在了我的.bash\u配置文件中。
3条答案
按热度按时间u1ehiz5o1#
mysql_connect()
从PHP5.5开始,已弃用,并在PHP7中删除。php5.5不是php的受支持版本,因此作者应该更新他们的代码。使用
mysqli_connect()
相反。vbopmzt12#
看起来您的wordpress安装正在尝试使用
mysql_connect
在wp-db.php
. wordpress默认使用mysql_connect
如果找不到mysqli
已安装或已覆盖。mysqli
随PHP7一起安装(您正在使用PHP7)。所以,检查一下
wp-config.php
并确认WP_USE_EXT_MYSQL
定义为false
tpxzln5u3#
好的,好的。
所以这个问题被wpdb标记了出来,看起来好像mysql没有工作,但它是mysqli。最后,我得到了php.ini文件的工作,但我想我会张贴所有的各种解决方案,可能会帮助别人。第四条对我来说很有用。
1) 关闭mysql\u connect以强制wordpress使用mysqli\u connect。转到wp-config.php并添加行
2) 检查php.ini文件在configure命令框中是否存在“--with mysqli=shared”?
3) 更新你的mysqli。我没有做这个,但接下来的建议似乎是在shell中运行这个。
我在windows上运行git bash,所以这对我来说是一堆废话。如果你在linux上,这可以工作。
4) 如上所述,我注意到php.ini没有在wp--info中给出。我使用找到了正确的文件(只需用它创建一个文件,然后从服务器访问它)。结果这个地方和我预想的不一样。然后我摆弄了一下上面的bash Package 器,最终得到了这个,这使得错误消失了:
如果我做了什么蠢事,请告诉我,谢谢你的时间。随时要求澄清。