我有一个可抓取的蜘蛛,配置为从某些站点获取数据。我已经在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'
任何帮助将不胜感激。
答案 0 :(得分:1)
问题的根源在于,PHP以对尝试存储输出的位置没有写特权的用户身份运行。
有两种简单的解决方案:
使目标位置可由用户PHP写入。
每个人都可以访问该目录:
chmod a+w /path/to/location
像这样,只有组成员才能访问该目录:
usermod -aG <group-name-of-the-location-owner> ampps
chmod g+w /path/to/location
将输出保存到其他位置。 /tmp
目录是可用于此类事情的位置。 (请确保在处理后删除文件,以防内部数据敏感)