0

我试图从 bar.php 调用 python 代码

$cmd = "python foo.py";
system($cmd);

它运行没有问题。但是, foo.py 应该在磁盘上保存一个文件。它不在那里。我以某种方式发现运行 Web 服务器的用户是 www-data。

我尝试使用用户 www-data $ php bar.php 从命令行运行 php 脚本它运行正常并保存了文件,因此用户 www-data 应该有权写入目录。

我注意到有人对“对其他用户没有帮助”进行了投票。但是,当您有一个 php 服务并且您有用其他语言(如 python)编写的代码时,知道这一点是必要的。

感谢所有建议。

我怀疑这是 b/c 我在 foo.py 的 python 代码中使用 Matplotlib,我有类似的代码

pl.scatter(data,...)
pl.plot(data,...)
pl.legend()
pl.save('path/to/bam.png')

也许从网络调用时,它可以绘制图像。这可能吗?如果是这样,有没有办法解决它?谢谢!

4

1 回答 1

2

由于您提供的信息量,我只能推测,但我认为这是您的问题。您的 Python 脚本可能使用相对路径,这意味着它创建的文件将出现在您的工作目录中,或者相对于它。

为了确认这一点,并找出你的文件当前的去向,你可以在 python 中打印当前的工作目录:

import os
print os.getcwd()

要修复它,请改用相对于 python 脚本的路径或绝对路径。例子:

import os
basedir = os.path.abspath(os.path.dirname(__file__))

file_path = os.path.join(basedir, 'my-file-name.txt')
于 2012-12-14T07:43:29.893 回答