【问题标题】:MacOS Catalina: Class 'ZipArchive' not foundMacOS Catalina:找不到类“ZipArchive”
【发布时间】:2020-02-25 07:48:32
【问题描述】:

升级到 10.15.1 (19B88) Mac OS Catalina 破坏了我的 PHP 7.3.9 开发环境。

$zip = new \ZipArchive;

产生异常“错误”并带有消息“找不到类 'ZipArchive'”

zip 和 unzip 安装在终端命令行中。

尝试使用 PECL 失败。尝试使用 Homebrew 失败。

您知道如何在 MacOS 上手动正确安装 ZipArchive 吗?

【问题讨论】:

  • php.net/manual/en/zip.installation.php。您的 PHP 安装似乎不是用它构建的。
  • 我认为 Catalina 用没有 ZipArchive 的 PHP 版本替换了我的 PHP 版本,因为 MacOS 本身不使用 zip。在 Catalina 之前,ZipArchive 已经存在。发布 Catalina,它消失了。如何解决?未知。现在我正在使用 System('zip xxx');
  • 安装你自己想要的PHP版本,不要依赖内置的。这几乎总是正确的。 brew.sh
  • 有一个很好的解决方法:affinitybridge.com/blog/…

标签: php macos ziparchive macos-catalina


【解决方案1】:

我所做的是以下,

brew install php@7.3

php 版本 7.3.19 已安装。

然后编辑我的 httpd.conf 使用

sudo nano /private/etc/apache2/httpd.conf 

http.conf 中的以下行

LoadModule php7_module libexec/apache2/libphp7.so

被替换为

LoadModule php7_module /usr/local/opt/php@7.3/lib/httpd/modules/libphp7.so

在模块块之后将以下内容添加到 http.conf

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

在 nano 中,我使用 ctrl+W 搜索 DirectoryIndex 添加 index.php 以最终成功

DirectoryIndex index.php index.html

然后我使用

更新了我的 PATH 变量
echo 'export PATH="/usr/local/opt/php@7.3/bin:$PATH"' >> /Users/<your user>/.bash_profile
echo 'export PATH="/usr/local/opt/php@7.3/sbin:$PATH"' >> /Users/<your user>/.bash_profile

然后我创建了一个新目录sbin,如下所示,

sudo mkdir /usr/local/sbin

将所有权更改为当前用户,

sudo chown -R $(whoami) /usr/local/sbin

链接酿造

brew link php@7.3 --force

重启 Apache

sudo apachectl restart

请注意:您不必完成所有步骤或按相同顺序执行,我只想分享我所做的和为我工作的。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,这对我有帮助。 基本上我所做的只是使用 brew 安装了 php,然后在 httd.conf 文件中链接了我使用 brew 安装的 php。步骤如下:

    1. 使用 home brew 安装 php

      brew install php@7.3

    这将安装 php.ini。现在我们需要链接它

    brew link php@7.3
    

    如果上面的命令由于缺少目录而无法运行,那么只需使用mkdir 创建它们并再次运行它。

    1. 在 httd.conf 文件中链接你的 php

    打开位于 /private/etc/apache2/httpd.conf 的 httpd.conf 文件 打开它并更改此行

    LoadModule php7_module libexec/apache2/libphp7.so
    

    到这里:

    LoadModule php7_module /usr/local/Cellar/php/7.3.11/lib/httpd/modules/libphp7.so
    

    这基本上是它只是让 apache 使用使用 homebrew 安装的 php。希望这对您有所帮助。

    这是一个链接,它更好地描述了如何连接自制安装的php:

    How to use the php that brew installed?

    【讨论】:

    • 请注意,您的路径可能与上述路径不同。我的是:/usr/local/Cellar/php@7.3/7.3.14/lib/httpd/modules/libphp7.so 你的行被改变了,输入“sudo apachectl restart”让它生效。
    猜你喜欢
    • 2018-10-19
    • 2020-02-06
    • 2020-09-04
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    相关资源
    最近更新 更多