【问题标题】:Homebrew PHP 7.4 upgrade fails on MacOS 10.15.1 Catalina [closed]MacOS 10.15.1 Catalina 上的 Homebrew PHP 7.4 升级失败 [关闭]
【发布时间】:2020-03-26 01:53:27
【问题描述】:

我尝试将自制 PHP 7.3.12 升级到 PHP 7.4.0 失败了。

这是我所做的:

brew update
sudo brew services stop php
brew upgrade
brew cleanup
brew doctor
sudo brew services start php
brew services list
sudo reboot now

这是我的预期:

服务器按预期恢复。

发生了什么:

WordPress 5.3 前端和后端都报告了可怕的“建立数据库连接时出错”错误。

phpMyAdmin 报以下三个错误:

  1. 无法登录 MySQL 服务器
  2. mysqli_real_connect(): 执行缓存_sha2 身份验证时出现意外的服务器响应:109
  3. mysqli_real_connect(): (HY000/2006): MySQL 服务器已经消失

这是我接下来要做的:

确保 MySQL 的用户名和密码正确。 确保正确的主机名。 确保 MySQL 正在运行:

mysqladmin -u root -p status
Enter password: 
Uptime: 173  Threads: 2  Questions: 3  Slow queries: 0  Opens: 113  Flush tables: 3  Open tables: 35  Queries per second avg: 0.017

对 PHP 7.4 ext-opcache.ini 文件进行以下更改:

opcache.enable = 1
opcache.enable_cli = 1
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 50000
opcache.validate_timestamps = 1
opcache.revalidate_freq = 2

对 PHP 7.4 php.ini 文件进行以下更改:

expose_php = Off
max_execution_time = 90
max_input_time = 90
max_input_vars = 2000
memory_limit = -1
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
display_startup_errors = Off
upload_max_filesize = 3G
post_max_size = 0
default_socket_timeout = 180
date.timezone = America/Chicago
pdo_mysql.default_socket = /tmp
mysqli.default_socket = /tmp/mysql.sock

安装了以下 PHP 7.4 扩展:

pecl channel-update pecl.php.net
pecl install apcu
pecl install imagick
pecl install redis

其他信息:

我的 httpd 日志没有报告任何异常:

[Sat Nov 30 20:53:48.021678 2019] [mpm_prefork:notice] [pid 140] AH00163: Apache/2.4.41 (Unix) OpenSSL/1.1.1d configured -- resuming normal operations
[Sat Nov 30 20:53:48.021785 2019] [core:notice] [pid 140] AH00094: Command line: '/usr/local/opt/httpd/bin/httpd -D FOREGROUND'

同样,我的 MySQL 日志报告没有异常:

2019-12-01T03:07:00.6NZ mysqld_safe Logging to '/usr/local/var/mysql/moriarty.local.err'.
2019-12-01T03:07:00.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/var/mysql
2019-12-01T03:07:02.994684Z 0 [System] [MY-010116] [Server] /usr/local/opt/mysql/bin/mysqld (mysqld 8.0.18) starting as process 398
2019-12-01T03:07:03.012177Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /usr/local/var/mysql/ is case insensitive
2019-12-01T03:07:06.203718Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2019-12-01T03:07:06.277615Z 0 [System] [MY-010931] [Server] /usr/local/opt/mysql/bin/mysqld: ready for connections. Version: '8.0.18'  socket: '/tmp/mysql.sock'  port: 3306  Homebrew.
2019-12-01T03:07:06.337877Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/tmp/mysqlx.sock' bind-address: '127.0.0.1' port: 33060

【问题讨论】:

  • 不特定于 MacOS。我在使用 php 7.4 和 MySQL 8.0.18 的 CentOS 机器上遇到了同样的问题

标签: php macos homebrew macos-catalina php-7.4


【解决方案1】:

这是一个错误。我会大胆猜测,这与将 mysqlnd 客户端 API 库版本从之前的 5.0.12 升级到 7.4.0 有关。

虽然您可以通过将default_authentication_plugin = mysql_native_password 添加到my.cnf[mysqld] 部分来临时将默认身份验证插件设置为本机密码,这是QUITE LESS SECURE,我建议将 php 降级(我可以确认 7.3.1 版本成功运行,并且可能也可以确认其他 7.3 版本)直到它被修复,除非你使用的是本机密码机制。

【讨论】:

猜你喜欢
  • 2021-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多