【问题标题】:Homebrew PHP 7.1 (macOS Sierra) Apache Syntax ErrorHomebrew PHP 7.1 (macOS Sierra) Apache 语法错误
【发布时间】:2017-12-12 09:16:05
【问题描述】:

所以我一直在关注This Tutorial,它有助于使用多个版本的 PHP 配置 Apache 2.4。一切都很顺利,我所有的 PHP 版本都可以正常工作,除了 7.1。尝试启动Apache服务器接收7.1的phpinfo时,收到如下错误信息:

httpd: Syntax error on line 178 of 
/usr/local/etc/apache2/2.4/httpd.conf: 
Cannot load /usr/local/opt/php71/libexec/apache2/libphp7.so into server: 
dlopen(/usr/local/opt/php71/libexec/apache2/libphp7.so, 10): image not found

这是存在于第 178 行的代码:

LoadModule php7_module  /usr/local/opt/php71/libexec/apache2/libphp7.so

我试过跑步

brew reinstall php71 --with-httpd24

并重新启动 Apache 服务器。仍然收到相同的错误消息。知道出了什么问题吗?我很感激任何回应!非常感谢!

【问题讨论】:

  • 您是否确认/libexec/apache2/libphp7.so 文件现在存在?
  • 最近 Homebrew 更改了 PHP 版本的命名方案(遵循他们去年为旧版本程序引入的通用命名方案)。使用brew --prefix php71(或php@7.1,如果php71 不起作用)找出在哪里搜索libphp7.so。

标签: php apache homebrew php-7.1


【解决方案1】:

我遇到了同样的问题。

对我来说,homebrew 在/usr/local/opt 中有不同的文件夹结构,其中的文件夹更像/usr/local/opt/php@7.1

所以我需要找到libphp7.so 住的地方,或者它是否存在。

运行find /usr -name "libphp7.so"

回来了:

/usr/libexec/apache2/libphp7.so 和 /usr/local/Cellar/php@7.1/7.1.15/lib/httpd/modules/libphp7.so

对我来说,两者都可以代替 /usr/local/opt/php71/libexec/apache2/libphp7.so,如果将来需要,我会更新。

所以我更新了httpd.conf 来使用

LoadModule php7_module /usr/local/Cellar/php@7.1/7.1.15/lib/httpd/modules/libphp7.so

然后我用sudo apachectl -k restart重新启动了apache,一切都很好。

【讨论】:

  • 同时运行命令 brew info php。在警告部分下,检查 LoadModule 位置并将其粘贴到 httpd.conf
【解决方案2】:

我在使用 brew install php 时遇到此错误。然后 apachectl -t 测试语法

httpd: Syntax error on line 180 of /private/etc/apache2/httpd.conf: Cannot load /usr/local/Cellar/php/7.3.2/lib/httpd/modules/libphp7.so into server: dlopen(/usr/local/Cellar/php/7.3.2/lib/httpd/modules/libphp7.so, 10): Symbol not found: _sqlite3_enable_load_extension\n  Referenced from: /usr/local/Cellar/php/7.3.2/lib/httpd/modules/libphp7.so\n  Expected in: /usr/lib/libsqlite3.dylib\n in /usr/local/Cellar/php/7.3.2/lib/httpd/modules/libphp7.so

出于某种原因???我在这里找到了 libphp7.so

LoadModule php7_module /usr/libexec/apache2/libphp7.so

插上电源就可以了。 但是 - 我不清楚为什么第一个失败了。

【讨论】:

  • 您激活的 php 是操作系统附带的默认 PHP 版本,如果是 Mojave,它是 7.1.33
【解决方案3】:

Homebrew 指示将此添加到我的 httpd.conf 文件中:

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

我尝试停止并重新启动只是得到同样的错误。在用不同的选项更新了几次之后,这个终于对我有用了。

LoadModule php7_module /usr/libexec/apache2/libphp7.so

【讨论】:

    【解决方案4】:

    在 usr/local/opt 中只有一个文件夹(别名)php

    `只需复制 php Alias-Folder 并将其重命名为 php@7.4`

    在那之后 sudo apache 优雅 我已经完成了

    【讨论】:

      【解决方案5】:

      我有一个 PHP 更新,文件路径已更改。我更改了httpd.conf中的模块路径。

      之前:

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

      之后:

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

      【讨论】:

        【解决方案6】:

        我遇到了同样的问题,但使用的是 php 7.2。

        运行 brew linkage php 表明存在一些损坏的依赖项。

        所以运行brew update && brew upgrade 为我解决了这个问题。

        【讨论】:

        • 当 Big Sur 11.3 更新削弱了我的 M1 Mac 很多时,这对我有用。
        猜你喜欢
        • 2017-06-19
        • 1970-01-01
        • 2017-05-30
        • 1970-01-01
        • 2018-03-21
        • 1970-01-01
        • 2019-03-09
        • 1970-01-01
        • 2017-05-19
        相关资源
        最近更新 更多