PHP调用Python代码无法执行问题排查求助
PHP调用Python脚本无法执行问题排查与解决建议
环境说明
- 编辑器:Visual Studio Code
- 服务器:XAMPP Apache
- 目标:通过PHP调用Python脚本并在网页显示执行输出,当前无法正常执行Python代码
相关代码
HTML运行按钮
<form action="" method="post"> <div class="card-header py-3 mb-30 mt-20 pb-20 pt-20"> <div class="center"> <input type="submit" name="runpython" value="Run" class="btn btn-primary"> </div> </div> </form>
PHP调用代码
<?php if(isset($_POST['runpython'])){ $output = shell_exec('python3 /xampp/htdocs/Klasifikasi_KNN/admin test.py'); echo $output; echo shell_exec('/xampp/htdocs/Klasifikasi_KNN/admin test.py'); $output = shell_exec('python3 /xampp/htdocs/Klasifikasi_KNN/admin test.py'); echo $output; echo shell_exec('xampp/htdocs/Klasifikasi_KNN/admin test.py'); echo shell_exec('/xampp/htdocs/Klasifikasi_KNN/admin test.py'); echo shell_exec('/xampp/htdocs/Klasifikasi_KNN/admin/test.py'); echo shell_exec('xampp/htdocs/Klasifikasi_KNN/admin/test.py'); echo shell_exec('python3 xampp/htdocs/Klasifikasi_KNN/admin/test.py'); echo shell_exec('python3 /xampp/htdocs/Klasifikasi_KNN/admin/test.py'); } ?>
test.py脚本
#! C:/Users/Jessen PC/AppData/Local/Microsoft/WindowsApps/python.exe print("Hello World")
已尝试操作
- 验证
shell_exec和exec函数均已启用,且exec功能正常(执行echo TEST返回预期结果) - 在XAMPP的
httpd.conf中添加Python脚本处理配置:AddHandler cgi-script .py ScriptInterpreterSource Registry-Strict - 使用D盘绝对路径调用Python脚本,结果为打开文件而非执行代码
解决建议
- 使用完整Python解释器路径调用
Windows环境下python3通常不是有效命令,直接指定Python解释器的绝对路径,路径含空格时用双引号包裹:
$output = shell_exec('"C:/Users/Jessen PC/AppData/Local/Microsoft/WindowsApps/python.exe" "D:/xampp/htdocs/Klasifikasi_KNN/admin/test.py"'); echo $output;
- 修复Python脚本的shebang行
shebang行格式错误(多了空格),修正为:
#!C:/Users/Jessen PC/AppData/Local/Microsoft/WindowsApps/python.exe print("Hello World")
注:Windows下shebang作用有限,核心还是靠PHP指定解释器路径。
检查文件权限
确保Apache运行用户(Windows下通常为SYSTEM或当前登录用户)对Python脚本文件、Python解释器拥有读取和执行权限。右键脚本文件,在「安全」选项卡添加对应用户的权限。捕获错误输出
shell_exec默认只捕获标准输出,重定向错误输出到标准输出,便于排查问题:
$output = shell_exec('"C:/Users/Jessen PC/AppData/Local/Microsoft/WindowsApps/python.exe" "D:/xampp/htdocs/Klasifikasi_KNN/admin/test.py" 2>&1'); echo $output;
通过输出可查看路径错误、权限不足等具体报错。
- 避免直接执行脚本文件
不要直接调用.py文件(系统默认用编辑器打开),必须通过Python解释器执行脚本,这是之前用D盘路径仅打开文件的核心原因。
内容的提问来源于stack exchange,提问作者Jessen Jie
相关产品推荐
相关产品推荐

