是否可以仅忽略特定文件的php.ini中禁用的函数?

是否可以仅忽略特定文件的php.ini中禁用的函数?,php,security,server,vps,Php,Security,Server,Vps,我有一个Linux VPS来托管我的网站。这是唯一一个在VPS上托管的网站。出于安全原因,我禁用了所有允许执行shell命令的php函数,特别是为了防止攻击者用于黑客系统的php shell正常工作 最近,我一直在考虑在我的服务器上使用无损JPEG压缩来优化用户上传的照片。我对stackoverflow做了彻底的研究,意识到我需要在服务器上安装一些程序。要使用它们进行压缩,这些程序应该通过shell访问来运行,但这是我不能允许的 所以,我的问题是:我可以强制php忽略我在php.ini中为服务器

我有一个Linux VPS来托管我的网站。这是唯一一个在VPS上托管的网站。出于安全原因,我禁用了所有允许执行shell命令的php函数,特别是为了防止攻击者用于黑客系统的php shell正常工作

最近,我一直在考虑在我的服务器上使用无损JPEG压缩来优化用户上传的照片。我对stackoverflow做了彻底的研究,意识到我需要在服务器上安装一些程序。要使用它们进行压缩,这些程序应该通过shell访问来运行,但这是我不能允许的

所以,我的问题是:我可以强制php忽略我在php.ini中为服务器上的一个特定文件(或者在最坏的情况下为特定目录)禁用的函数吗?如果没有,是否有解决我的问题的变通方法

谢谢

简短的回答是不

此指令必须在php.ini中设置。例如,您不能在httpd.conf中设置此指令

或者,您可以使用以下解决方案之一:

  • 使用Imagick库:质量接近100,可以考虑

  • 定义一些cron作业,这些作业将在每个常规X时间为您执行此操作,这意味着图像不会立即合成

您可能需要通过cgi使用另一个带有php的虚拟主机,这样它就可以拥有单独的ini文件。或者,使用其他模块(比如python)将php作为shell命令与自定义ini一起执行可能会更容易。如果是您的vps,禁用它们有什么帮助?你允许随机的人在你的服务器上运行代码吗?@SergeSeredenko如果你详细解释你所说的“使用custom.ini将其他模块exec php作为shell命令”是什么意思,我将不胜感激。我也不明白你的第一个想法。你是说在Apache中添加一个文件作为虚拟主机吗?我不明白。怎么做?@smith我只是非常小心,没有人入侵我的服务器,因为我不想让我的用户的数据被盗。如果他们不能运行代码,这将无法保护任何东西。如果他们以任何方式入侵,他们可以改变设置。你似乎只是在让自己的生活变得艰难,没有实际的好处。