Mac OS 12 系统下 Apache httpd localhost 环境 PHP8 无法正常运行
Mac OS 12 配置PHP8后httpd输出PHP源码排查方案
以下操作适配系统自带httpd及brew安装的httpd两种场景
通用排查步骤
- 确认PHP模块正常加载
执行对应命令校验加载状态:
系统自带httpd:httpd -M | grep php
brew安装的httpd:先执行brew services list | grep httpd确认brew版本httpd处于运行状态,再执行对应芯片架构的命令:
Intel芯片:/usr/local/bin/httpd -M | grep php
Apple Silicon芯片:/opt/homebrew/bin/httpd -M | grep php
如果输出无php_module相关内容,说明模块加载失败,先检查httpd.conf中LoadModule行的路径是否正确,brew安装PHP8的默认模块路径为:
Intel芯片:/usr/local/opt/php/lib/httpd/modules/libphp.so
Apple Silicon芯片:/opt/homebrew/opt/php/lib/httpd/modules/libphp.so - 确认PHP文件解析规则已配置
打开httpd.conf文件,确认存在以下配置,缺失则手动添加:
同时修改<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>DirectoryIndex配置,将index.php设置为优先解析的首页:DirectoryIndex index.php index.html - 校验目录权限匹配
确认站点文件目录的权限和httpd.conf中配置的User、Group一致,可执行命令赋予目录全局读执行权限:chmod -R 755 你的站点目录路径 - 重启httpd生效配置
所有配置修改完成后必须重启服务才会生效,对应命令:
系统自带httpd:sudo apachectl restart
brew安装的httpd:brew services restart httpd
场景专项注意事项
- 使用系统自带httpd
Mac OS 12默认禁用.htaccess解析,如果站点用到伪静态规则,需要修改httpd.conf中对应站点目录的AllowOverride配置为All,同时确认mod_rewrite模块处于开启状态。 - 使用brew安装的httpd
需避免和系统自带httpd端口冲突,brew版httpd默认监听8080端口,如需改成80端口可将httpd.conf中Listen 8080修改为Listen 80,同时关闭系统自带httpd服务:sudo apachectl stop
内容的提问来源于stack exchange,提问作者badbeat1
相关产品推荐
相关产品推荐

