从PHP调用特定版本的Python
我正在搭建一个大型系统,这个系统需要通过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" 等等……