我希望在特殊目录下禁用执行某些php函数,如file_put_content
,exec
,eval
。
我可以在php.ini中使用disable_functions
但是如何定义像c:\poject\public
这样的特殊文件夹
答案 0 :(得分:3)
根据PHP documentation,您无法在php.ini文件中的任何位置使用disable_functions设置。
如果你需要per-vhost或 per-directory 对函数的限制,我建议使用PHP-FPM的单独实例,每个实例都有自己的php.ini。它还提供了额外的安全性优势,例如每个守护程序实例的完整沙箱。
修改强>
上阅读相关信息或强>
UNIX和TCP套接字的答案 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"