Я использую сервер на CentOS 7, которым управляет Plesk 17.
Я пытаюсь запустить команду через shell_exec
в сценарии, но он терпит неудачу каждый раз. Сначала я подумал, что это проблема с правами доступа / каталогом, но это не так, поскольку команда отлично работает из командной строки, с тем же пользователем, который выполняет в shell_exec
,
chdir("/var/www/vhosts/website.com/MyScraper");
$call = shell_exec("pwd & id -u -n & date & scrapy crawl crawler_name & date");
var_dump($call);
При этом вызове я вижу правильный путь, затем текущий пользователь (user1), дату, затем ничего. Это означает, что команда scrapy не работает, и последний вызов date также не выполняется (именно так я узнал, что команда scrapy потерпела крах). Запуск только команды scrapy в shell_exec явно не работает.
Как я могу заставить это работать? Из putty работает точно такой же вызов с тем же пользователем (user1) из того же каталога.
Изменить: я получаю этот вывод из вызова.
Traceback (most recent call last):
File "/usr/bin/scrapy", line 11, in <module>
sys.exit(execute())
File "/usr/lib/python2.7/site-packages/scrapy/cmdline.py", line 128, in execute
cmds = _get_commands_dict(settings, inproject)
File "/usr/lib/python2.7/site-packages/scrapy/cmdline.py", line 46, in _get_commands_dict
cmds = _get_commands_from_module('scrapy.commands', inproject)
File "/usr/lib/python2.7/site-packages/scrapy/cmdline.py", line 29, in _get_commands_from_module
for cmd in _iter_command_classes(module):
File "/usr/lib/python2.7/site-packages/scrapy/cmdline.py", line 19, in _iter_command_classes
for module in walk_modules(module_name):
File "/usr/lib/python2.7/site-packages/scrapy/utils/misc.py", line 71, in walk_modules
submod = import_module(fullpath)
File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/usr/lib/python2.7/site-packages/scrapy/commands/version.py", line 6, in <module>
import OpenSSL
File "/usr/lib/python2.7/site-packages/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import crypto, SSL
File "/usr/lib/python2.7/site-packages/OpenSSL/crypto.py", line 16, in <module>
from OpenSSL._util import (
File "/usr/lib/python2.7/site-packages/OpenSSL/_util.py", line 6, in <module>
from cryptography.hazmat.bindings.openssl.binding import Binding
File "/usr/lib64/python2.7/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 13, in <module>
from cryptography.hazmat.bindings._openssl import ffi, lib
ImportError: /usr/lib64/python2.7/site-packages/cryptography/hazmat/bindings/_openssl.so: cannot enable executable stack as shared object requires: Permission denied
Задача ещё не решена.
Других решений пока нет …