python3 的别名在 SSH 上工作但不在浏览器中使用 PHP?

Alias for python3 working on SSH but not in browser with PHP?

我在共享主机环境中工作,该环境默认带有 Python 2.6。我也使用 SSH 安装 Python 3.4。

当我使用别名python3 执行脚本时,它运行完美。 但是在浏览器中,我使用 PHP 调用 Python 脚本,它 returns 错误:python3 command not found。如果我只使用命令python,它使用2.6版本,脚本不起作用。

我无法重新启动服务器,因为它是共享的。

有办法解决这个问题吗?

PHP 调用 PYTHON3 脚本的脚本:

<?php

$command = "python3 proccess.py 2>&1";

?>

您正在脚本中使用 bash 别名。您的 Web 应用程序无法在 non-interactive shell 中访问它。 And you don't want to do that anyway

创建一个任何人在任何地方都可以使用的符号链接:

ln -s /usr/bin/python3.4 /usr/bin/python3

编辑: 当然你也可以在 PHP 命令中指定完整路径:

<?php

$command = "/path/to/your/python3.4 proccess.py 2>&1";

?>

问题是,当您通过网络服务器在 PHP 中 运行 时,PATH 变量不同。所以有两种方法可以解决

选项 1

使用 echo $PATH 从 shell 获取路径并在脚本中使用相同的路径

<?php

$command = "PATH=/a:/b/c python3 proccess.py 2>&1";

?>

选项 2

使用 python3 的绝对路径。 运行 which python3 以及您在脚本中使用的路径

<?php

$command = "/usr/bin/python3 proccess.py 2>&1";

?>

您可以将命令更改为:

<?php

$command = "~/.bashrc && python3 process.py 2>&1";

?>

假设~/.bashrc是包含别名的文件,或者使用对应的别名文件。这样,您将能够使用所有别名