从PHP调用特定版本的Python

4 投票
3 回答
1709 浏览
提问于 2025-04-17 18:36

我正在搭建一个大型系统,这个系统需要通过PHP来运行Python 2.7。每次调用的方式大概是这样的:

exec('python test.py');

但是无论我怎么做,PHP总是用Python 2.4来执行我的文件。因为系统太大,我不能在代码里做改动,只能让'python'直接指向Python 2.7。

经过一番搜索,我得出的结论是应该更改PHP的环境设置。

echo getenv("PYTHONPATH"); // NOTHING
echo getenv("PATH"); // /bin:/usr/bin

我可以通过putenv来做到这一点(比如:putenv("PATH=/usr/bin/python2.7:".$_ENV["PATH"]),但是无论我怎么改,PHP还是在运行Python 2.4。

希望有人能给个简单的解决办法 :)

3 个回答

0

如果你不能使用完整路径,那就试试别名:

alias python='/usr/bin/python2.7'
python --version
Python 2.7.2
3

你能不能直接这样做呢:

exec('/usr/bin/python2.7/python test.py');
1

还有一种选择,你可以在脚本 test.py 的第一行设置解释器的路径。

#!/usr/local/bin/python2.7 

但是你需要把 test.py 变成可执行文件。

chmod +x path_to_file/test.py

然后可以从 PHP 运行它,像这样:

exec('path_to_file/test.py');

附注:要注意,有时候管理员会为了安全原因禁用 exec 函数。 禁用的函数包括 "popen, exec, system, passthru, proc_open, shell_exec" 等等……

撰写回答