2013-12-19 27 views
5

我有一個小問題試圖禁用我的PHP中的一些功能。 首先,我不是服務器的所有者,所以我不能更改主php.ini配置。但我試圖用服務器所有者給我的指示來改變它。disable_functions php.ini eval函數仍在工作

這裏是我把php.ini文件中的行我在phpinfo()創建

disable_functions=eval,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source 

我可以在本地值和主值,這些功能被禁止見。

但我的問題從這裏開始。 在女巫我運行phpinfo()同一個文件,我可以確認該功能應該被禁用,我運行eval()shell_exec()eval()仍然工作,但shel_exec()被禁用。

爲什麼我不能禁用eval()

+0

您的服務器是否運行'suPHP?',如果需要,您需要在您的.htaccess文件中啓用它' suPHP_ConfigPath/home/USERNAME/public_html'。這將確保php.ini設置在整個目錄中遞歸生效。 – Ohgodwhy

+0

我做了 suPHP_ConfigPath路徑/到/我/的php.ini/ 所以我想我有一個服務器上 工作還改變我的描述suphp的了shell_exec不工作了,但eval仍然有效 – Incognito

+0

你重新啓動apache? – exussum

回答

10

eval是一種語言結構,而不是函數,所以它不能被禁用。有關更多信息,請參閱http://www.php.net/eval

+0

yikes!這是個壞消息...... al hacker腳本有eval() – arod

+0

如果你使用suhosin補丁,那麼你可以使用suhosin配置禁用eval – user4845680