如何在 linux debian 上 运行 使用来自 php 的 url 参数进行 scrapy

How to run scrapy with url parameters from php on linux debian

正如标题所说...我如何 运行 我的 scrapy 项目具有来自 php 的特定 url 参数?我之前在 windows 上试过这个并且它工作得很好,现在在 linux 上它什么也没做。

在 Windows 工作:

pclose(popen('cd .. & scrapy crawl mySpider -a "urls=http://www.example.com/'.$variable1.'/'.$variable2.'"','r'));

在 Linux 上不工作:

pclose(popen('sudo cd .. | sudo scrapy crawl mySpider -a "urls=http://www.example.com/'.$variable1.'/'.$variable2.'"','r'));

我已经检查过 php 文件试图以用户 www-data 的身份执行脚本,因此我出于测试目的将此用户添加到 sudoer 列表,但它仍然无法正常工作。当我尝试直接使用 shell 中的命令时,它正在工作。我还检查了所有文件是否都属于 www-data 并且是可执行的,它们是。我的蜘蛛归 www-data 所有,拥有 755 权利。 我在这里错过了什么?

编辑: 当我将用户更改为 www-data 并尝试 运行 它起作用的命令时,只是 php 脚本不是 运行ning.

我找到了解决办法。我发现 php 不理解管道运算符。

执行该命令的正确方法如下:

pclose(popen('cd .. ; scrapy crawl mySpider -a "urls=https://example.com', 'r'));

必须使用分号代替。