在使用PHP编写的Bash文件中运行Python脚本

3

我想运行一个简单的Python脚本(name.py):

#!/usr/bin/env python 
 name = raw_input('What is your name?\n')
 print 'Hi, %s.' % name

使用以下bash脚本(Helloworld.sh):
 #!/bin/bash

python name.py

通过以下的 PHP
<!DOCTYPE html>
<html>

<body>

<?php
if (isset($_POST['Submit1'])) {

 echo shell_exec('sh /home/administrator/Desktop/Helloworld.sh');
}

  ?>
<form action="myfilename.php" method="post">
<p><Input Type = "Submit" Name ="Submit1" Value = "Save Parameters">

</form>
</p> 

</body>
</html>

日志中的错误内容为:

python:无法打开文件'name.py':[Errno 2] 没有那个文件或目录

从终端执行 bash 文件没有问题。我该怎么办?


2
它是否在同一个目录下? - heinst
为什么不直接这样做:echo shell_exec('python /home/administrator/Desktop/name.py'); - heinst
尝试在shell脚本中给出目录的完整路径。 - heinst
可能是PHP进程由不具有name.py文件访问权限的不同用户启动的吗?也许还要检查一下shell脚本本身。 - Ivaylo Slavov
为什么你说它是从不同的用户开始的?我应该怎么做才能纠正这种情况? - Jack
显示剩余2条评论
2个回答

2

在执行 Python 脚本之前尝试添加这行代码

cd "$(dirname "$0")"

你的bash文件中吗?


桌面上有Python和Bash文件,因此我添加了cd "$(Desktop "$0")"。这是新错误:/home/administrator/Desktop/Helloworld.sh: 3: /home/administrator/Desktop/Helloworld.sh: Desktop: 没有找到 python: 无法打开文件'name.py': [Errno 2] 没有那个文件或目录。 - Jack
1
不,只需添加cd "$(dirname "$0")",不要更改dirname,保留它。 - Aboud Zakaria

1
你可以像这样修改 shell 脚本:

#!/bin/bash
BASEDIR=`dirname "${0}"`
cd "$BASEDIR"
python name.py

始终在包含脚本的目录上运行。或者,如果 name.py 在另一个目录中,则相应地更改 cd 命令。


桌面上有Python和Shell脚本,我已经将我的Shell脚本更改为:#!/bin/bashBASEDIR=Desktop "${0}" cd "$BASEDIR" python name.py................................但是没有成功。 - Jack
这里应该是BASEDIR=dirname "${0}"而不是BASEDIR=Desktop "${0}"dirname是一个命令,你不需要修改我的代码,只需复制粘贴即可。 - Jahid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接