在PHP中通过系统函数调用特定的Python版本

1 投票
1 回答
1146 浏览
提问于 2025-04-18 12:41

我遇到的问题是,我想在一个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;

?>

撰写回答