发布时间:2026-09-28 16:49:35 浏览次数:1
PHP是一种动态语言,这也意味着它非常灵活,但这也会导致某些违规代码或者故意恶意的攻击行为得以执行。通过禁用一些敏感函数,如exec(),system()和shell_exec()等,可以提高服务器安全性,但这同时也可能会影响到你的应用程序。
下面是在php.ini中启用disable_functions来提高安全的完整攻略:
首先,你需要找到你的服务器上php.ini的正确位置。在Linux服务器上,通常存储在/etc/php.ini或/etc/php.d/cli/php.ini文件中,而在Windows服务器上,它通常存储在C:\windows目录下。你可以使用以下命令来查找php.ini文件的位置:
php --ini一旦你找到了php.ini文件,你需要编辑这个文件来启用disable_functions。使用任何你喜欢的文本编辑器打开php.ini文件。
找到以下行:
; disable_functions =把这一行前面的分号去掉,并在等号后面添加要禁用的函数。例如:
disable_functions = exec, system, shell_exec在上面的示例中,我们禁用了三个敏感函数:exec(),system()和shell_exec()。你可以根据需要增加或删除这些函数,也可以添加其他的敏感函数以提高你的服务器的安全性。
一旦你对php.ini文件进行了更改,你需要重启PHP来使更改生效。在Linux服务器上,你可以通过以下命令来重启PHP:
service php-fpm restart如果你使用的是Apache服务器,你可能需要通过以下命令重启Apache:
service httpd restart在Windows服务器上,你可以通过重启IIS来重新启动PHP。
下面是一个示例,演示了禁用exec()函数的影响。我们将创建一个包含exec()函数的PHP文件,并尝试执行命令ls -la。 我们还将尝试使用disabled_functions()函数来检查在php.ini中是否禁用了exec()函数。
<?php// 执行 ls -la 命令echo exec('ls -la');// 检查 exec 函数是否被禁用if (in_array('exec', explode(',', ini_get('disable_functions')))) { echo 'exec is disabled';} else { echo 'exec is enabled';}?>如果没有禁用exec()函数,则应该看到类似于以下内容的输出:
total 8drwxr-xr-x 2 root root 4096 Feb 23 08:41 .drwxr-xr-x 18 root root 4096 Feb 23 08:31 ..-rw-r--r-- 1 root root 203 Feb 23 08:41 test.phpexec is enabled现在我们将在php.ini中禁用exec()函数,并重新启动PHP。下面是我们修改后的php.ini文件:
disable_functions = exec如果你重新运行上面的代码,并查看结果,则应该看到以下内容:
exec is disabled我们可以看到,我们无法执行exec()函数来执行命令,因为它已经被禁用了。