在特殊目录上禁用一些php函数

时间:2016-12-27 04:48:04

标签: php windows apache

我希望在特殊目录下禁用执行某些php函数,如file_put_contentexeceval

我可以在php.ini中使用disable_functions但是如何定义像c:\poject\public这样的特殊文件夹

2 个答案:

答案 0 :(得分:3)

根据PHP documentation,您无法在php.ini文件中的任何位置使用disable_functions设置。

如果你需要per-vhost或 per-directory 对函数的限制,我建议使用PHP-FPM的单独实例,每个实例都有自己的php.ini。它还提供了额外的安全性优势,例如每个守护程序实例的完整沙箱。

修改

您可以在official documentation

上阅读相关信息

UNIX和TCP套接字的

php-fpm example configuration

答案 1 :(得分:1)

如果你有一个工作版的php.ini来禁用你想要的功能,那么你只需要"链接"该specidif .ini文件的文件夹。这意味着当您从该目录提供文件时,您的Web服务器应该使用该特定.ini文件而不是系统文件。

如果您使用Apache2作为服务器,可以找到解决方案here您可以为每个虚拟主机定义特定的php.ini文件。让我们说你的特定文件夹是/ var / www / web1,你应该将带有禁用功能的php.ini放到/ var / www / web1中并使用这个Apache2配置

<VirtualHost 1.2.3.4:80>
[...]
PHPINIDir /var/www/web1
[...]
</VirtualHost>

如果您不熟悉或不使用VirtualHosts(但仍使用Apache2),另一种可能的解决方案是将PHP配置放入文件夹中名为.htaccess的文件中,语法如下:

php_value disable_functions "file_put_content,exec,eval"