PHP调用Python脚本,Python脚本不能写入文件

1 人关注

我有一个PHP脚本,调用一个Python脚本。 Python脚本做了一个简单的写入文件的功能。

Python:

f = open("xxx", "w")
f.write("xxxxxx")
f.close
$output = system("python /home/xxxx/training/scripts/load.py);
echo $output;

如果我直接运行Python,它能够创建并写入文件。 但是当我用 PHP 来调用它时,没有文件被创建和写入。 这是不是因为一些与系统路径有关的问题? 如何解决这个问题?

p.s. 如果我运行 "whoami",它显示用户为 "apache"。这是否可能是写到文件失败的原因?

太感谢了!

5 个评论
你的文件路径是相对的还是完全指定的?可能是一个工作目录问题。
可能是任何东西。php方面的情况呢?如果你想知道答案,请提供一切。
如果你说的 "使用PHP "是指通过浏览器调用它,也许运行webserver的用户(在基于debian的情况下是wwwdata,在类似redhat的httpd,我想)在目标目录中没有写权限。
你好,我使用的是绝对路径,而不是相对路径。
是的,我所说的 "使用PHP "是指通过浏览器调用它。但该目录是在777中
php
python
Evian
Evian
发布于 2015-09-13
1 个回答
evexoio
evexoio
发布于 2015-09-13
已采纳
0 人赞同

这个Python脚本将没有输出,而且php代码不会将命令的输出保存到变量 output 中,而是立即打印出来,你应该使用shell_exec来实现。

$output = shell_exec("python script.py"); print $output;

不管怎么说。

在Ubuntu服务器10.04上测试。我希望这对你在Archlinux上也有帮助。

In PHP:

$command = escapeshellcmd('/usr/custom/test.py'); $output = shell_exec($command); echo $output;

在Python文件'test.py'中,验证第一行的这段文字:(见shebang

#!/usr/bin/env python
  

另外,Python文件应该有正确的权限(如果Php脚本在浏览器或通过curl运行,则以用户 www-data / apache,如果Php脚本在浏览器中运行或通过curl运行的话) 和/或必须是 "可执行的"。此外,.py文件中的所有命令必须有 正确的权限。