Mac OS下MAMP环境中PHP无法调用终端命令问题咨询
解决步骤
- 检查PHP禁用函数配置
找到MAMP对应PHP版本的php.ini文件,路径为/Applications/MAMP/bin/php/php<你的版本号>/conf/php.ini,搜索disable_functions配置项,确认exec、copy、shell_exec等需要使用的函数没有被加入禁用列表。如果存在,删除对应函数名后保存,重启MAMP的Apache服务生效。 - 校验进程与文件权限
MAMP的Apache默认以_www用户运行,你需要确保要执行的终端命令、要操作的文件/目录对_www用户开放了对应权限,可临时将目标目录权限设为755测试,也可直接调整目录所属用户为_www。同时前往Mac系统设置→隐私与安全性→完全磁盘访问,给MAMP及httpd进程开启权限,解决M1芯片的权限拦截问题。 - 开启错误输出排查根因
在你的业务代码顶部添加两行配置强制输出错误:
调用error_reporting(E_ALL); ini_set('display_errors', 1);exec时主动捕获错误输出和返回状态,示例代码如下:
打印出来的内容就是具体的执行错误信息,可对应定位问题。exec('你要执行的命令 2>&1', $output, $return_var); var_dump($output, $return_var); - 确认配置生效路径
在web目录新建一个包含<?php phpinfo(); ?>的文件,通过浏览器访问该文件,查看Loaded Configuration File对应的路径是否为MAMP自带PHP的php.ini路径,避免你修改了CLI端的配置,web端的CGI模式PHP没有生效。
内容的提问来源于stack exchange,提问作者Matheus Pereira
相关产品推荐
相关产品推荐

