You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XAMPP环境下PHP exec()无法执行Python脚本,无报错无响应求助

解决XAMPP Apache中exec()无法执行Python脚本的问题

以下是针对你遇到问题的排查和解决步骤:

1. 修复路径转义问题

PHP字符串中的Windows反斜杠需要转义,或者直接使用正斜杠替代,否则会被解析为特殊字符。修改test.php的exec命令:

// 方式1:转义反斜杠
exec("C:\\Users\\Json\\AppData\\Local\\Microsoft\\WindowsApps\\python.exe C:\\xampp\\htdocs\\app\\test.py 2>&1", $output, $return_var);
// 方式2:使用正斜杠(更简洁)
// exec("C:/Users/Json/AppData/Local/Microsoft/WindowsApps/python.exe C:/xampp/htdocs/app/test.py 2>&1", $output, $return_var);

print_r($output);
echo "执行返回码:" . $return_var;

添加$return_var参数可以获取命令执行的返回码,非0值通常表示执行出错。

2. 排查Apache权限问题

Apache服务默认以LocalSystem或特定用户身份运行,可能没有访问Python路径或test.py文件的权限:

  • 右键Python.exe所在目录(C:\Users\Json\AppData\Local\Microsoft\WindowsApps),在「安全」选项卡中添加Apache运行用户(如NT AUTHORITY\SYSTEM),并赋予「读取&执行」权限
  • 同样给test.py所在目录和文件添加对应权限
  • 若Python已加入系统环境变量,可简化命令为exec("python.exe C:/xampp/htdocs/app/test.py 2>&1", $output, $return_var)

3. 修改Python脚本避免交互式阻塞

你的test.py中使用os.system("start cmd /k")启动交互式cmd窗口,但Apache是后台服务,无法创建前台交互窗口,会导致脚本卡住。替换为可验证执行的代码:

print("Python脚本执行成功")
# 写入日志文件确认执行状态
with open("C:/xampp/htdocs/app/test_exec.log", "w", encoding="utf-8") as f:
    f.write("脚本已成功执行")

执行后查看test_exec.log是否生成,即可判断脚本是否被调用。

4. 检查PHP配置限制

打开XAMPP的php.ini文件,确认以下配置:

  • safe_mode = Off(PHP 5.4+已移除该配置,可忽略)
  • 若存在open_basedir配置,确保Python路径和test.py路径在允许范围内,或暂时注释该配置后重启Apache

内容的提问来源于stack exchange,提问作者user13964720

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 21:40:41