Apache无法在macOS - Monterey上加载php7模块

lymnna71  于 2022-12-23  发布在  Apache
关注(0)|答案(1)|浏览(190)

我在Mac上安装了php@7.4 with brew,一切正常,但当我在Safari中打开localhost时,它只显示php代码。
我的代码:

<?php
echo "Hello world";

以及本地主机上的结果:result on localhost
我想这是我的问题。我添加了这一行到http. conf文件和没有工作在localhost(Safari浏览器无法连接到服务器"localhost")。

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

eeq64g8w1#

最后我找到了解决方案。macOS中的网守确保只有经过验证的应用程序才能执行,这是通过使用codesign对应用程序进行签名来实现的。代码签名在macOS Big Sur上是可选的,但从macOS Monterey开始是强制性的。
使用homebrew安装的PHP模块没有签名,所以您需要先签名,然后才能使用。
我创建了一个用于代码签名的证书颁发机构和一个代码签名证书,然后才能使用codesign实用程序对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步:使用您创建的代码签名证书名称使用codesign对PHP模块进行签名。

codesign --sign "<Your Name>" --force --keychain /Library/Keychains/login.keychain-db /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so

步骤5:使用您喜欢的文本编辑器打开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。

相关问题