php shell_exec() - ampps - scrapy 命令的权限被拒绝
php shell_exec() - ampps - permission denied for scrapy command
我有一个 scrapy 蜘蛛配置为从某些站点获取数据。我在 php 和 html 中开发了一个 ui 来显示从 json 文件中提取的 data.this 数据是在 运行 scrapy 上生成的命令。
我正在为 运行 php 使用 ampps。
最初我的 php 代码如下所示
$output= shell_exec('cd /home/testuser/Desktop/scrapy_tutorial/ && scrapy crawl example -o example.json 2>&1');
print_r($output);
我得到的结果是 'scrapy command not found'。所以我更改了我的代码以设置 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 以对尝试存储输出的位置没有写权限的用户身份运行。
有两个简单的解决方案:
使目标位置可由用户写入 PHP 作为。
像这样每个人都获得目录的写入权限:
chmod a+w /path/to/location
像这样只有组成员才能获得目录的写入权限:
usermod -aG <group-name-of-the-location-owner> ampps
chmod g+w /path/to/location
将输出保存到别处。 /tmp
目录是一个对此类事情有用的位置。 (一定要处理完后删除文件,以防里面的数据敏感)
我有一个 scrapy 蜘蛛配置为从某些站点获取数据。我在 php 和 html 中开发了一个 ui 来显示从 json 文件中提取的 data.this 数据是在 运行 scrapy 上生成的命令。 我正在为 运行 php 使用 ampps。 最初我的 php 代码如下所示
$output= shell_exec('cd /home/testuser/Desktop/scrapy_tutorial/ && scrapy crawl example -o example.json 2>&1');
print_r($output);
我得到的结果是 'scrapy command not found'。所以我更改了我的代码以设置 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 以对尝试存储输出的位置没有写权限的用户身份运行。
有两个简单的解决方案:
使目标位置可由用户写入 PHP 作为。
像这样每个人都获得目录的写入权限:
chmod a+w /path/to/location
像这样只有组成员才能获得目录的写入权限:
usermod -aG <group-name-of-the-location-owner> ampps
chmod g+w /path/to/location
将输出保存到别处。
/tmp
目录是一个对此类事情有用的位置。 (一定要处理完后删除文件,以防里面的数据敏感)