gpt4 book ai didi

php shell_exec() - ampps - scrapy 命令的权限被拒绝

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:32:44 25 4
gpt4 key购买 nike

我有一个 scrapy 蜘蛛配置为从某些站点获取数据。我在 php 和 html 中开发了一个 ui 来显示抓取的数据。这些数据是从运行 scrapy 命令时生成的 json 文件中获取的。我正在使用 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”

我们将不胜感激。

最佳答案

问题的根源在于 PHP 以对尝试存储输出的位置没有写权限的用户身份运行。

有两个简单的解决方案:

  1. 使 PHP 充当的用户可写目标位置。

    • 像这样每个人都获得了对目录的写入权限:

      chmod a+w /path/to/location

    • 像这样只有组成员才能获得目录的写入权限:

      usermod -aG <group-name-of-the-location-owner> ampps

      chmod g+w /path/to/location

  2. 将输出保存到别处。 /tmp directory 是一个对此类事情有用的位置。 (一定要在处理后删除文件,以免里面的数据敏感)

关于php shell_exec() - ampps - scrapy 命令的权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55277862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com