0

我的 XAMPP-VM 服务器中有一个 php 文件,如下所示:

<?php

$message = exec('python testPython.py');
echo($message);

 ?>

testPython.py 文件如下所示:

f = open('data.txt', 'w+')
f.write('test')
print('hello')
f.close()

当我像 localhost/testPHP.php 那样运行 php 文件时,testPython.py 文件卡在第一行并且无法继续。当我注释掉第一行、第二行和最后一行代码时,程序运行良好并打印出“hello”。有趣的是,当我像这样从终端运行 testPython.py 文件时,python testPython.py它可以工作。它打开 data.txt 并写入“测试”。有谁知道我该如何解决这个问题?

注意:我知道我可以很容易地从 php 中做同样的事情,而无需执行 python 文件,但这篇文章只是展示了我的问题。我需要在我已经投入大量工作的 python 文件中打开一个文件。

4

1 回答 1

0

首先,您可以创建一个文件,将其命名为 runpy 并将其放在上面

python testPython.py

然后在你的 php 中运行

exec('bash runpy');

其次确保文件夹设置为 777,因为当您使用 exec 运行 cmd 时,您以 apache 用户 www-data 的身份运行它,而在终端中以 root/admin 身份运行,这就是为什么它在那里工作而不是在 php 上工作,所以只需确保将权限设置为 777

于 2019-02-26T03:13:13.650 回答