开发者社区> 问答> 正文

标记为[linux]的问题

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命令,权限被拒绝

展开
收起
祖安文状元 2020-01-05 18:51:36 449 0
1 条回答
写回答
取消 提交回答
  • 问题的根源在于,PHP以对尝试存储输出的位置没有写特权的用户身份运行。

    有两种简单的解决方案:

    使目标位置可被用户PHP写入。

    这样,每个人都可以访问该目录:

    chmod a+w /path/to/location

    这样,只有组成员才能访问该目录:

    usermod -aG ampps

    chmod g+w /path/to/location

    将输出保存到其他位置。该/tmp目录是用于执行此类操作的位置。(如果内部数据敏感,请务必在处理后删除文件)

    2020-01-05 18:51:43
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载