问题的根源在于,我试图从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版本。我不知道我的脚本的哪一部分必须更改,以强制使用上面的Python3.2(我需要2.6不能处理的3.2中的功能/模块)。任何帮助都将不胜感激!
发布于 2014-07-09 20:23:04
您可以使用您的别名作为web服务器正在运行的用户(通常是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;
?>https://stackoverflow.com/questions/24662537
复制相似问题