Как видно из заголовка … как я могу запустить мой scrapy проект с определенным параметром url из php? Я пробовал это на 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, но он все еще не работает. Когда я пытаюсь использовать команду непосредственно в оболочке, она работает, хотя. Я также проверил, все ли файлы принадлежат www-данным и являются ли они исполняемыми. Мой паук принадлежит www-data и имеет 755 прав.
Что мне здесь не хватает?
Редактировать:
Когда я меняю пользователя на www-data и пытаюсь запустить команду, она работает, просто скрипт php не работает.
Я нашел решение. Я понял, что php не понимает оператора Pipe.
Правильный способ выполнения этой команды следующий:
pclose(popen('cd .. ; scrapy crawl mySpider -a "urls=https://example.com', 'r'));
Вместо этого следует использовать точку с запятой.
Других решений пока нет …