0

正如标题所说......我如何使用来自php的特定url参数运行我的scrapy项目?我之前在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 脚本没有运行。

4

1 回答 1

0

我找到了解决方案。我发现 php 不理解 Pipe 运算符。

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

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

必须改用分号。

于 2017-10-23T10:25:20.450 回答