在PHP中通过系统函数调用特定的Python版本
我遇到的问题是,我想在一个PHP脚本里调用一个Python脚本。我现在使用的是一个共享服务器,上面安装了多个版本的Python:
/usr/bin/python -V ... 2.6
/home/tony/python/python -V ... 2.7
/home/tony/python/Python-3.2/python ... 3.2
echo $PATH ... /home2/tony/python/Python-3.2/
echo $PYTHONPATH... /home2/tony/python/lib/python3.2/site-packages
另外,我在Unix系统里做了一个别名:
alias python3='/home2/tony/python/Python-3.2/python'
这是我的Python脚本(test.py)的内容:
#!/usr/bin/python
import sys
print 'Python version:', sys.version_info
这是我的PHP脚本(test.php)的内容:
<?php
$py_script = "test.py";
$py_args = "name1=value1++name2=value2";
system('python ' . $py_script . ' ' . $py_args, $retval);
// $retval will have a trailing 0 or 1 at the end
$retval = trim($retval, "0 1");
echo $retval;
?>
但是当我在浏览器里打开test.php时,我看到的还是版本2.6。我不知道该改哪个地方才能强制使用Python 3.2,因为我需要3.2里的一些功能和模块,而2.6是无法处理的。希望能得到一些帮助!
1 个回答
0
你可以用你的别名来作为网络服务器运行的用户(通常在Debian或Ubuntu上是www-data)
alias python3='/home2/tony/python/Python-3.2/python'
或者修改你的PHP设置
<?php
$py_script = "test.py";
$py_args = "name1=value1++name2=value2";
system('/home/tony/python/Python-3.2/python ' . $py_script . ' ' . $py_args, $retval);
// $retval will have a trailing 0 or 1 at the end
$retval = trim($retval, "0 1");
echo $retval;
?>