Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP shell_exec can';不执行特定命令_Php_Shell_Centos_Scrapy_Plesk - Fatal编程技术网

PHP shell_exec can';不执行特定命令

PHP shell_exec can';不执行特定命令,php,shell,centos,scrapy,plesk,Php,Shell,Centos,Scrapy,Plesk,我在CentOS 7上运行一台服务器,由Plesk 17管理 我试图通过脚本中的shell\u exec运行命令,但每次都失败。起初我认为这是一个权限/目录问题,但事实似乎并非如此,因为命令在命令行中运行得非常好,用户与在shell\u exec中执行的用户相同 chdir("/var/www/vhosts/website.com/MyScraper"); $call = shell_exec("pwd & id -u -n & date & scrapy crawl c

我在CentOS 7上运行一台服务器,由Plesk 17管理

我试图通过脚本中的
shell\u exec
运行命令,但每次都失败。起初我认为这是一个权限/目录问题,但事实似乎并非如此,因为命令在命令行中运行得非常好,用户与在
shell\u 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)、日期,然后是nothing。这意味着scrapy命令不起作用,最后一个日期调用也不执行(这就是我知道scrapy命令崩溃的原因)。在shell_exec obvisouly中仅运行scrapy cmd也不起作用

我怎样才能让它工作?在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
回溯(最近一次呼叫最后一次):
文件“/usr/bin/scrapy”,第11行,在
sys.exit(execute())
文件“/usr/lib/python2.7/site packages/scrapy/cmdline.py”,执行中的第128行
cmds=\u获取\u命令\u命令(设置,项目中)
文件“/usr/lib/python2.7/site packages/scrapy/cmdline.py”,第46行,在命令中
cmds=\u从\u模块获取\u命令\u('scrapy.commands',inproject)
文件“/usr/lib/python2.7/site packages/scrapy/cmdline.py”,第29行,在\u-get\u-commands\u-from\u模块中
对于命令类(模块)中的cmd:
文件“/usr/lib/python2.7/site packages/scrapy/cmdline.py”,第19行,在命令类中
对于walk_模块中的模块(模块名称):
文件“/usr/lib/python2.7/site packages/scrapy/utils/misc.py”,第71行,在walk_模块中
子模块=导入模块(完整路径)
文件“/usr/lib64/python2.7/importlib/_init__.py”,第37行,在导入模块中
__导入(名称)
文件“/usr/lib/python2.7/site packages/scrapy/commands/version.py”,第6行,在
导入OpenSSL
文件“/usr/lib/python2.7/site packages/OpenSSL/_init__.py”,第8行,在
从OpenSSL导入加密,SSL
文件“/usr/lib/python2.7/site packages/OpenSSL/crypto.py”,第16行,在
从OpenSSL.\u util导入(
文件“/usr/lib/python2.7/site packages/OpenSSL/_util.py”,第6行,在
从cryptography.hazmat.bindings.openssl.binding导入绑定
文件“/usr/lib64/python2.7/site packages/cryptography/hazmat/bindings/openssl/binding.py”,第13行,在
来自cryptography.hazmat.bindings.\u openssl导入ffi,lib
ImportError:/usr/lib64/python2.7/site-packages/cryptography/hazmat/bindings//\u openssl.so:无法启用共享对象所需的可执行堆栈:权限被拒绝

可能是
PATH
问题。请尝试使用
scrapy
实用程序的绝对路径,或为http服务器进程设置正确的
PATH
环境变量。请记住,此进程不是您正在测试手动执行的登录进程的结果。这可能很容易导致错误不同的
路径
环境变量。我认为它应该是
&
,而不是
&
。难道没有一个
&
在后台运行该命令吗?@aynber即使只有我的scrapy调用,它也不起作用。@arkascha尝试了“usr/bin/scrapy crawl mycrawler”,它是从putty开始工作的,而不是从shell\u exec开始的。你尝试过
shell\u exec吗(“刮痧爬行器\u name 2>&1”);
检查是否有输出到stderr?可能是
路径
问题。请尝试使用
scrapy
实用程序的绝对路径,或为http服务器进程设置正确的
PATH
环境变量。请记住,此进程不是您测试手册时登录进程的结果使用执行。这可能很容易导致不同的
路径
环境变量。我认为它应该是
&
,而不是
&
。单个
&
不是在后台运行命令吗?@aynber即使只使用我的scrapy调用,它也不起作用。@arkascha尝试了“/usr/bin/scrapy crawl mycrawler”,从putty开始工作,而不是从putty开始m shell_exec.您是否尝试过
shell_exec(“scrapy crawl crawler_name 2>&1”)
检查是否有输出到stderr?