php.ini 启用disable_functions提高安全

发布时间:2026-09-28 16:49:35 浏览次数:1

PHP是一种动态语言,这也意味着它非常灵活,但这也会导致某些违规代码或者故意恶意的攻击行为得以执行。通过禁用一些敏感函数,如exec(),system()和shell_exec()等,可以提高服务器安全性,但这同时也可能会影响到你的应用程序。

下面是在php.ini中启用disable_functions来提高安全的完整攻略:

1. 找到php.ini文件

首先,你需要找到你的服务器上php.ini的正确位置。在Linux服务器上,通常存储在/etc/php.ini或/etc/php.d/cli/php.ini文件中,而在Windows服务器上,它通常存储在C:\windows目录下。你可以使用以下命令来查找php.ini文件的位置:

php --ini

2. 编辑php.ini文件

一旦你找到了php.ini文件,你需要编辑这个文件来启用disable_functions。使用任何你喜欢的文本编辑器打开php.ini文件。

找到以下行:

; disable_functions =

把这一行前面的分号去掉,并在等号后面添加要禁用的函数。例如:

disable_functions = exec, system, shell_exec

在上面的示例中,我们禁用了三个敏感函数:exec(),system()和shell_exec()。你可以根据需要增加或删除这些函数,也可以添加其他的敏感函数以提高你的服务器的安全性。

3. 重启PHP

一旦你对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()函数来执行命令,因为它已经被禁用了。

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477