php shell_exec()-ampps-对于s我有一个可抓取的蜘蛛,配置为从某些站点获取数据。我已经在php和html中开发了一个ui,以显示已抓取的数据。此数据是从运行scrapy命令时生成的json文件中提取的。iam使用ampps运行php。最初我的php代码如下所示
$output= shell_exec('cd /home/testuser/Desktop/scrapy_tutorial/ && scrapy crawl example -o example.json 2>&1');
print_r($output);
我得到的结果是“找不到scrapy命令”。所以我更改了代码以设置scrapy bin的完整路径
$output= shell_exec('cd /home/testuser/Desktop/scrapy_tutorial/ && /usr/local/bin/scrapy crawl example -o example.json 2>&1');
print_r($output);
现在我获取包含消息的输出
PermissionError: [Errno 13] Permission denied: 'example.json'
似乎搜寻器工作正常,但没有写入文件的权限。
我检查了使用php脚本执行的用户
exec('whoami');
然后输出“ ampps”
任何帮助将不胜感激。rapy命令,权限被拒绝
问题的根源在于,PHP以对尝试存储输出的位置没有写特权的用户身份运行。
有两种简单的解决方案:
使目标位置可被用户PHP写入。
这样,每个人都可以访问该目录:
chmod a+w /path/to/location
这样,只有组成员才能访问该目录:
usermod -aG ampps
chmod g+w /path/to/location
将输出保存到其他位置。该/tmp目录是用于执行此类操作的位置。(如果内部数据敏感,请务必在处理后删除文件)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。