php - Python 脚本不会从 PHP 调用中执行

标签 php python shell

我正在尝试执行 Python 脚本作为对 PHP 代码的响应。这就是我的 Python 脚本的样子(当然是为了测试目的):

#!/usr/bin/env python
# -*- coding: utf-8 -*-
print 'test'

import sys
sessionDir = sys.argv[1][:-14]
sys.stdout = open(sessionDir + 'output.txt','w')

print sessionDir

sys.stdout.close()

我的 PHP 代码如下所示:

global $calculationDir, $calculation, $userFilesDir;
//$pythonExe = '"D:\\WinPython-64bit-2.7.10.3\\WinPython Command Prompt.exe" python ';
//$pythonExe = 'abaqus python ';
$pythonExe = 'python ';
$scriptFile = '"'.$_SERVER['APPL_PHYSICAL_PATH'].substr($calculationDir,2).$calculation.'\\python\\test.py" ';
$dataFile = '"'.$userFilesDir.$_SESSION['user'].'\\'.$calculation.'\\'.$this->sessionID.'\\Parameters.dat"';
$command = escapeshellcmd($pythonExe.$scriptFile.$dataFile);

echo passthru('ipconfig').'<br>';

$output = passthru($command);
echo $output.'<br>';

passthru($command) 不执行 python 脚本。如果我在命令控制台中手动键入命令行,则命令行可以正常工作。出于测试目的,我还打印我的 ipconfig 只是为了测试该功能是否有效 - 它确实有效。

正如您在我的代码中看到的,我有三种方法来调用 python 解释器。第一个是可移植的 python 版本,第二个是 abaqus python,第三个是 python 的系统路径。这是棘手的部分。该脚本确实适用于 abaqus python,但不适用于其他两个 python。

我还尝试了exec()、shell_exec()、system()而不是passthru(),这没有改变任何东西。用户还被授予对 python 脚本的完全访问权限。我缺少什么?你有什么想法我还应该尝试看看 python 脚本是否被执行吗? (是否缺少需要我提供的信息?)

<小时/> 编辑:

它在 IIS 7 Web 服务器上运行。 - 我通过 Windows 文件资源管理器以及 IIS 程序(对于整个文件夹)更改了 python 脚本的权限。

最佳答案

这作为答案并不是很有帮助,但我没有足够的代表来发表评论。希望有人可以在此基础上提供最终的解决方案,但这至少会给您一些方向。

由于您正在回显 HTML,因此我假设您正在从 HTTP 请求运行此 PHP 代码。

最有可能的是运行 PHP 代码的用户(例如 apache - 这取决于您的服务器配置)没有执行您的Python脚本的权限。

不过,从使用反斜杠作为目录分隔符来看,您似乎使用的是 Windows,而且我不知道如何在 Windows 上修复该问题。

关于php - Python 脚本不会从 PHP 调用中执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45842131/

相关文章:

php - 正则表达式从字符串中获取货币和金额

bash - 如何在 shell 脚本中获取 INI 值?

python - 3.x 之前的 Python 的正确 SQL 查询

python - 数据库和模型仍然存在 DJango 中出现编程错误

linux - Linux 端口中每秒的请求数

linux - 在 shell 脚本中转义 jq 表达式中的符号

php - parse_str()突然不起作用

php - 如何从现有数据库表中为选择框生成包含数据的 html 表? PHP MySql

php - Laravel 5 - 调用未定义的方法 Illuminate\Database\Eloquent\Collection::Paginate()

python - Google App Engine 中的引用模型加载