我想从 PHP (LAMP) 运行 Python 脚本。该脚本导入astropy,由于某种原因我无法成功地做到这一点。我可以使用下面复制的示例文件重现基本问题。我认为这不是权限或 Python 路径问题。例如,我可以导入 numpy、scipy 等。我还可以创建一个 Python 脚本来读取和写入同一目录 (/www/var) 上的文件。我在 /usr/bin/python 上有标准的 Python,还有 Anaconda 版本。两者都有astropy,无论我使用哪一个,我都会遇到同样的问题。
我怀疑这是关于以我自己(工作正常)或 www-data(来自网络浏览器)的身份运行代码。但是,当我从 Linux 终端执行此操作时:sudo -u www-data php test.php,代码按预期工作。
这是test.php:
<?php
echo "<p>begin test.php</p>";
system("python test.py");
echo "<p>end test.php</p>";
?>
和test.py:
print("this is test.py ...")
import sys, numpy, scipy, matplotlib
print("passed the import sys, numpy, scipy, matplotlib ...")
import astropy
print("passed the import astropy ...")
当我打开 test.php 时,我得到的是:
begin test.php
this is test.py ... passed the import sys, numpy, scipy, matplotlib ... ERROR: TypeError: coercing to Unicode: need string or buffer, NoneType found [genericpath]
end test.php