Не все знают, что функцию eval невозможно запретить с помощью dusable_function. А с ее помощю производится немало вредоносных действий.
Помогает выйти из ситуации модуль PHP — suhosin
Ставим:
cd /usr/local/src
wget http://download.suhosin.org/suhosin-0.9.30.tgz
tar xfz suhosin-0.9.30.tgz
cd suhosin-0.9.30
phpize
./configure
make
make install
make clean
Готово.
Теперь открываем php.ini и дописываем:
[suhosin] extension="suhosin.so" suhosin.executor.disable_eval=On
В интернет еще встречал такой конфиг:
[suhosin] extension="suhosin.so" ;подключаем модуль suhosin.session.encrypt = Off ;Отключить шифрование сессии (требуется для большинства логин скриптов) suhosin.log.syslog=511 ;Регистрация всех ошибок suhosin.executor.include.max_traversal=4 ;Макс обхода в глубину т.е. ‘../../’ suhosin.executor.disable_eval=On ;Отключить eval опцию suhosin.executor.disable_emodifier=Off ;Отключить e модификатор suhosin.mail.protect=2 ;Запретить новые строки в Subject:, To: заголовки и двойные строки в дополнительных заголовках suhosin.sql.bailout_on_error=On ;Молча отказать неудавшимся SQL запросам
Ну а вообще, описание конфигурации доступно здесь.
ДОБАВЛЕНО:
И еще… если вдруг, PHP установлен по нестандартному адресу, например, используется несколько версий PHP, то установку необходимо производить путем вызова phpize, который относится именно к требуемой версии PHP, а так же с указанием адреса php-config в команде ./configure, например, если PHP установлен по адресу /usr/bin/php54 и все, что к нему относится находится внутри этой директории, то установка будет выглядеть так:
cd /usr/local/src
wget http://download.suhosin.org/suhosin-0.9.30.tgz
tar xfz suhosin-0.9.30.tgz
cd suhosin-0.9.30
/usr/bin/php54/bin/phpize
./configure --with-php-config=/usr/bin/php54/bin/php-config
make
make install
make clean
В противном случае, модуль может не запуститься, поскольку может быть собран с неподходящим API.