gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:51:53 24 4
gpt4 key购买 nike

我正在尝试执行 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com