我遇到了一个奇怪的问题。我有一个从 PHP 脚本调用的 Python 脚本。这一切都在 Ubuntu 18.04 上的 Apache 服务器上运行。部分 Python 脚本使用 Google Drive API。编辑:见底部经过大量测试和复制后,我得出结论,只需导入以下 Google Drive Python 库和依赖项:
from __future__ import print_function
from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
from googleapiclient.http import MediaIoBaseDownload
从 Web 调用脚本时会弄乱脚本。我的意思是 Python 脚本似乎没有执行,并且我应该通过 print 语句获得的任何 shell 输出都不会返回到 PHP 脚本。在本地调用脚本(python myscript.py)时,它工作得很好。
奇怪的是,当我从 Python 脚本中删除这些导入语句时,它在 PHP 和从浏览器直接启动脚本时都可以正常执行。在这两种情况下,我还能够将 shell 输出返回到 PHP 脚本。我已经为 Python 脚本提供了适当的权限,并且我已经将 Apache 配置为能够运行 CGI 脚本。这是我的 Python 脚本的样子:
#!/usr/bin/env python3
import cgitb
from __future__ import print_function
from googleapiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
from googleapiclient.http import MediaIoBaseDownload
cgitb.enable()
print("Hello World")
这是我的 PHP 脚本的样子:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$output = shell_exec("python path_to_my_script/myscript.py");
echo $output;
?>
编辑:我使用通过 pip 安装的另一个 3rd 方 Python 库运行了几个测试,这实际上似乎是通过 PHP 执行脚本时导入任何 3rd 方库的问题。
小怪兽爱吃肉
猛跑小猪
相关分类