Apache 无法在 macOS 上加载 php7 模块 - Monterey
Apache can’t load php7 module on macOS - Monterey
我已经在 Mac 上安装了带有 brew 的 php@7.4。一切正常,但是当我在 Safari 中打开 localhost 时,它只显示 php 代码。
我的代码:
<?php
echo "Hello world";
和本地主机上的结果:
result on localhost
我认为这是我的问题。我将此行添加到 http.conf 文件,但在本地主机中没有任何效果(Safari 无法连接到服务器“本地主机”)。
LoadModule php7_module /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so
我终于找到了解决办法。 macOS 中的 Gatekeeper 确保只能执行经过验证的应用程序,这是通过使用协同设计对应用程序进行签名来实现的。代码签名在 macOS Big Sur 和之前是可选的,但自 macOS Monterey 以来是强制性的。
PHP使用homebrew安装的模块没有签名,需要先签名才能使用
在使用代码签名实用程序对 PHP 模块进行签名之前,我创建了一个用于代码签名的证书颁发机构和一个代码签名证书。
第 1 步:
How to create Certificate Authority for Code Signing in macOS
第 2 步:
How to create code signing certificate in macOS
第 3 步:从 Apache 的 PHP LoadModule 指令找到 PHP 模块的位置或路径。
grep -nir "^loadmodule.*php" /etc/apache2 /etc/apache2/other/00-httpd.conf:4:LoadModule php7_module /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so
第 4 步:使用代码签名和您创建的代码签名证书名称对 PHP 模块进行签名。
codesign --sign "<Your Name>" --force --keychain /Library/Keychains/login.keychain-db /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so
第 5 步:
使用您喜欢的文本编辑器,使用 PHP LoadModule 指令打开 Apache 配置文件。
sudo nano /etc/apache2/other/00-httpd.conf
第 6 步:
在 PHP LoadModule 指令中的模块路径后添加代码签名证书名称。
LoadModule php7_module /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so "<Your Name>"
然后重启apache。
我已经在 Mac 上安装了带有 brew 的 php@7.4。一切正常,但是当我在 Safari 中打开 localhost 时,它只显示 php 代码。
我的代码:
<?php
echo "Hello world";
和本地主机上的结果: result on localhost
我认为这是我的问题。我将此行添加到 http.conf 文件,但在本地主机中没有任何效果(Safari 无法连接到服务器“本地主机”)。
LoadModule php7_module /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so
我终于找到了解决办法。 macOS 中的 Gatekeeper 确保只能执行经过验证的应用程序,这是通过使用协同设计对应用程序进行签名来实现的。代码签名在 macOS Big Sur 和之前是可选的,但自 macOS Monterey 以来是强制性的。
PHP使用homebrew安装的模块没有签名,需要先签名才能使用
在使用代码签名实用程序对 PHP 模块进行签名之前,我创建了一个用于代码签名的证书颁发机构和一个代码签名证书。
第 1 步: How to create Certificate Authority for Code Signing in macOS
第 2 步: How to create code signing certificate in macOS
第 3 步:从 Apache 的 PHP LoadModule 指令找到 PHP 模块的位置或路径。
grep -nir "^loadmodule.*php" /etc/apache2 /etc/apache2/other/00-httpd.conf:4:LoadModule php7_module /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so
第 4 步:使用代码签名和您创建的代码签名证书名称对 PHP 模块进行签名。
codesign --sign "<Your Name>" --force --keychain /Library/Keychains/login.keychain-db /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so
第 5 步: 使用您喜欢的文本编辑器,使用 PHP LoadModule 指令打开 Apache 配置文件。
sudo nano /etc/apache2/other/00-httpd.conf
第 6 步: 在 PHP LoadModule 指令中的模块路径后添加代码签名证书名称。
LoadModule php7_module /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so "<Your Name>"
然后重启apache。