我有一个PHP脚本,它将创建数据并将其附加到文本文档。然后,该脚本将执行将读取该文档的python脚本,并在raspberry pi上移动创建另一个文档。我一直在寻找过去几个小时的不同解决方案,而且它们似乎都归结为权限。根据我的发现,我设置了以下内容:
-rwxrwxrwx 1 www-data www-data 314 Jan 9 16:09 AlbumString.py
-rwxrwxrwx 1 www-data www-data 74 Jan 9 21:31 display.txt
AlbumString.py是python脚本,display.txt是PHP文件的权限,Python脚本是从中读取的。进一步研究somone建议查看apache的错误日志。当我看到这个时,我看到我收到了一个权限错误:
Traceback (most recent call last):
File "AlbumString.py", line 13, in <module>
display = open('/media/pi/external/Photos/' + templist.pop(0),'a')
PermissionError: [Errno 13] Permission denied: '/media/pi/external/Photos/Erik.txt'
如果文件已存在,我的python代码将创建或附加文件。在运行此迭代的情况下,文件Erik.txt不存在,因此必须创建它。 AlbumString.py的代码:
#!/usr/bin/python
import sys
import json
import base64
album = open('/var/www/html/uploads/display.txt')
templist = []
a= 0
for x in album:
templist.append(x.rstrip('\n'))
album.close()
display = open('/media/pi/external/Photos/' + templist.pop(0),'a')
for x in templist:
display.write(x+'\n')
display.close()
我用来调用python脚本的PHP代码:
fclose($fh);
$testing = shell_exec("python3 AlbumString.py");
if(!$testing){
echo "You are a failure!<br>";
} else {
echo "You are a genius<br>";
}
echo "end of document";
}
我还在我的sudoers文件中添加了www-data,这是没有建议但是我会给它一个机会,但没有任何效果。 PHP正确写入文件,如果我从控制台调用python脚本,也可以正确执行。