В некоторых случаях, пусть и не всегда, при работе с PHP (скрипты просто или сайт), может возникнуть необходимость в такой функции как, shell_exec()
В случае когда функция не включена, мы получим ошибку:
Fatal error: Uncaught Error: Call to undefined function shell_exec() in /www/user/data.php:xx Stack trace: #0 {main} thrown in /www/user/data.php on line xx
Для использования таких функций как shell_exec(), exec() или system(), в зависимости от текущей необходимости, они должны быть включены в файле php.ini.
В настоящее время в большинстве версиях PHP, в связи с опасностью использования, эти функции выключены в директиве «disable_functions» конфигурации php.ini
Подробное описание функции на php.net
Включить необходимую функцию PHP, в панели aaPanel, не составит особого труда.
Авторизовываемся в панели и переходим в раздел App Store
В списке установленных плагинов и дополнений находим PHP нужной вам версии.
В правой части строки, выбранной вами версии PHP, нажимаем на ссылку «Settings»
Откроется окно настроек, в котором мы переходим на вкладку «Configuration file».
Откроется текущий конфигурационный файл, выбранной версии PHP. Используя поиск браузера по странице, находим строку начинающуюся с «disable_functions = … »
В полном виде она выглядит так:
disable_functions = passthru,exec,system,putenv,chroot,chgrp,chown,popen,proc_open,shell_exec, pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,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,imap_open,apache_setenv
Находим в этой строке нужное нам «shell_exec,» и вырезаем вместе с запятой в конце.
В качестве совета, рекомендую вырезанную функцию из строки, вставить выше в закомментированный текст, который начинается с символа «;», чтобы функция была поближе, а в случае необходимости, вы могли без ошибок и быстро вернуть как было.
Нажимаем ниже на кнопку «Save» и дожидаемся подтверждения сохранения настроек.
Следующим шагом, переходим в этом же окне на вкладку «Service». Нажимаем на кнопку «Restart», это необходимо для принудительного перезапуска службы PHP и применения всех внесенных изменений в конфигурационный файл.
Появится запрос подтверждения, где мы жнем на «Confirm».
В случае отсутствия проблем при применении настроек и перезапуска службы, появится сообщение об успешном перезапуске службы PHP.
На этом шаге, можно все закрывать все окна, включая саму панель и пробовать снова запускать проблемный скрипт, чтобы убедиться в том, что текущая ошибка ушла.
З.Ы
У меня проблема с функцией shell_exec возникла, когда возился со скриптом, для отображения в браузере кол-во ядер сервера и вывод температуры по каждому из них в реальном времени. На одном сервере, вроде все работало и на какое-то время все было забыто и оставлено, мол зачем трогать работающее. Но недавно перенес скрипт на малинку, работать перестало. Пришлось вспоминать, как это лечится. Подумал пусть будет такая вот памятка, как для себя, так и для тех, кто тоже столкнется с такой необходимостью.
К этой записи нет комментарий. Ваш будет первым!