Shell执行被禁用


Shell Exec disabled

我在服务器上使用shell执行时有一点麻烦。在遵循一些教程之后,我改变了我的php.ini:

safe_mode   Off
disable_functions   pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,    pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
suhosin.executor.func.blacklist passthru, show_source, system, pcntl_exec, popen, pclose, proc_open, proc_nice, proc_terminate, proc_get_status, proc_close, leak, apache_child_terminate, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, escapeshellcmd, escapeshellarg, exec

这是我的phpinfo(),没有对shell_exec命令的引用。我不知道这个suhosin.executor. funcs .blacklist来自哪里,因为它在我的/etc/php5/apache2/conf.d/suhosin.ini中被注释掉了。

我在Ubuntu 12.04下使用zpanel。谢谢你!

在所有可能的php.ini文件中搜索suhosin.executor.func.blacklist可能会有所帮助,例如

grep -r suhosin.executor.func.blacklist /etc/php5

条目可以在应用程序目录或父目录的。htaccess中设置,例如

grep -r suhosin.executor.func.blacklist /var/www/

phpinfo()列出。ini文件的目录,例如:

Scan this dir for additional .ini files => /foo/bar
Additional .ini files parsed => /foo/bar/php.ini

它来自您的Apache VHOST配置文件。通常位于

/etc/zpanel/配置/apache/httpd-vhosts.conf

如果找不到VHOST配置文件,请尝试Zpanel -> Admin -> Module Admin ->点击"Apache Config"然后找到"Apache VHOST Conf"路径。

然后在任意文本编辑器中打开该文件并删除自定义vhost的值。

首先你需要找到httpd.conf文件

# find / -type f -name "httpd.conf"

然后依次打开文件,搜索shell_exec word或blacklist word

例子

# nano /etc/usrname/configs/apache/httpd-vhosts.conf

按ctrl+w,输入suhosin.executor. function .blacklist并回车从这一行删除shell_exec并保存文件,保存文件后重新启动apache,如

# service httpd restart