【问题标题】:PHP call Python script and the python script cannot write to a filePHP调用Python脚本并且python脚本无法写入文件
【发布时间】:2015-09-13 06:38:20
【问题描述】:

我有一个调用 python 脚本的 PHP 脚本。 Python 脚本执行简单的写入文件功能。

Python:

f = open("xxx", "w")
f.write("xxxxxx")
f.close

PHP:

$output = system("python /home/xxxx/training/scripts/load.py);
echo $output;

如果我直接运行 Python,它能够创建和写入文件。 但是当我使用 PHP 调用它时,不会创建和写入文件。 那是因为一些系统路径相关的问题吗? 如何解决?

附言如果我运行“whoami”,它会将用户显示为“apache”。这可能是写文件失败的原因吗?

非常感谢!

【问题讨论】:

  • 您的文件路径是相对的还是完全指定的?可能是工作目录问题。
  • 可以是任何东西。 php端在哪里?如果您想要答案,请提供一切。
  • 如果“使用 PHP”是指通过浏览器调用它,也许运行网络服务器的用户(在基于 debian 的情况下是 wwwdata,在类似 redhat 的 httpd 中,我认为)不会在目标目录中具有写权限。
  • 您好,我使用的是绝对路径,而不是相对路径。
  • 是的,我所说的“使用 PHP”是通过浏览器调用它。但是那个目录在 777

标签: php python


【解决方案1】:

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

例如

<?php 
$output = shell_exec("python script.py");
print $output;
?>

无论如何,

在 Ubuntu Server 10.04 上测试。我希望它对您在 Archlinux 上也有帮助。

在 PHP 中:

<?php 

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

?>

在 Python 文件 'test.py' 中验证第一行中的此文本:(参见 shebang 解释):

#!/usr/bin/env python

Python 文件也应该有正确的权限(对用户执行 www-data / apache 如果 PHP 脚本在浏览器中或通过 curl 运行) 和/或必须是“可执行的”。 .py 文件中的所有命令也必须有 正确的权限。

chmod +x myscript.py

来源:Running a Python script from PHP

【讨论】:

  • 嗨阿卜杜拉,对不起,我在这里打错了。我在脚本中所做的是 f = open("xxx", "w")
  • 嗨@Abdallah,我已经用代码更新了这个问题。
猜你喜欢
  • 1970-01-01
  • 2014-03-02
  • 2014-04-08
  • 1970-01-01
  • 1970-01-01
  • 2014-10-10
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多