Windows Server下XAMPP环境中PHP调用Python脚本失败求助
在Windows Server的XAMPP环境中PHP执行Python脚本的排查与解决
先搞定Apache权限问题
Windows下Apache默认用系统账户运行,大概率没有访问Python解释器或脚本文件的权限。修改服务登录账户试试:- 按Win+R输入
services.msc打开服务管理器 - 找到Apache服务(一般命名为Apache2.4)
- 右键选择属性→登录选项卡,切换到“此账户”,填写本地管理员账号和密码,重启服务
- 按Win+R输入
绝对路径要写对,处理路径空格
不要用相对路径,直接写全路径;如果路径包含空格,必须用引号包裹。换用exec函数,能获取错误输出和返回码,方便排查问题:// 先确认py.exe的真实路径,可能是C:\PythonXX\py.exe或者C:\Windows\py.exe $cmd = escapeshellcmd('"C:/Windows/py.exe" "C:/xampp/htdocs/python.py"'); exec($cmd, $output, $return_code); print_r($output); echo "返回码:".$return_code;- 返回码127:说明找不到Python解释器,检查路径是否正确
- 返回码1:说明脚本本身执行出错,先去命令行直接运行脚本排查问题
先确保Python脚本能单独跑通
打开CMD,直接执行C:/Windows/py.exe C:/xampp/htdocs/python.py,看是否能输出预期结果。如果命令行都跑失败,先修复脚本的语法错误、补充缺失的依赖包。检查PHP的安全限制
打开XAMPP目录下的php.ini文件,检查两项配置:disable_functions中如果包含shell_exec、exec、system,删掉这些函数名- 旧版PHP里
safe_mode要设置为Off(新版PHP已移除该配置)
修改完成后记得重启Apache服务。
统一编码避免无输出或乱码
在Python脚本开头添加编码声明,确保输出编码与PHP一致:# -*- coding: utf-8 -*- import sys sys.stdout.encoding = 'utf-8'
内容的提问来源于stack exchange,提问作者Christoforos
相关产品推荐
相关产品推荐

