【发布时间】:2013-10-03 19:31:46
【问题描述】:
我需要帮助来弄清楚如何在 php 脚本中的 python 中生成输出文件。
所以问题来了: 我有一个允许用户上传文件的 php 脚本。 这些文件存储在服务器中。 之后,这些文件将在 python 脚本上运行,并将生成输出文件。 之后,php 脚本将获取这些输出文件,并向用户发送电子邮件。 我想让它在用户上传并单击提交按钮后自动发送给用户。
我已经完成了所有这些,直到尝试在 php 脚本中调用 python 脚本 php 脚本中的 python 脚本不执行生成输出文件的函数。
这是我用来调用 bash 脚本的函数:
system('bash /data/home/rxs061/public_html/test.sh');
我也用过函数 exec();和 shell_exec(); 但不起作用。 这里的问题,函数没有在命令行运行,所以不会生成输出文件。
这是在 bash 脚本 (test.sh) 中:
python /home/rxs061/public_html/test.py
outfile=$PWD/test.out
echo "$PWD/"
这里的问题是它不想生成“test.out”
这是在 python 脚本 (test.py) 中:
import sys
outfile = open('test.out', 'w')
outfile.write('it worked\n')
outfile.close()
这与权限无关。 您如何将所有这些放在一个 php 脚本中? 或者还有其他解决方案吗? 或者如何让它输出文件???
【问题讨论】:
-
test.sh不是 Python 脚本,而是 bash 脚本(它本身运行 Python 脚本)。 -
为什么不用python发送邮件?让一切异步
-
更重要的是:当您运行
test.sh时,$PWD是什么?你希望它是什么? -
最后,“不起作用”是什么意思? “不在服务器/unix shell 上运行”是什么意思?实际发生了什么?
-
@abarnert $PWD 是路径。所以如果我运行 exec('bash /data/home/rxs061/public_html/test.sh') 或 shell_exec("bash /data/home/rxs061/public_html/test.sh") 或 system("bash /data/ home/rxs061/public_html/test.sh"),不会生成 test.sh 中的预期输出文件,即 test.out。因为它只有在我在命令行中运行“bash /data/home/rxs061/public_html/test.sh”时才能生成。
标签: php python bash shell exec