【发布时间】:2010-01-19 17:47:45
【问题描述】:
我在 VPS 上使用主机,他们不允许我使用 php 的 ini_set 函数在运行时逐个脚本地设置配置。相反,我必须直接在 php.ini 文件中更改设置,这是通过 SSH 访问的任务。
这是为什么?
这虽然很好,但有点烦人,因为我在共享服务器上有 12 个域,我不一定想全面设置设置....
【问题讨论】:
我在 VPS 上使用主机,他们不允许我使用 php 的 ini_set 函数在运行时逐个脚本地设置配置。相反,我必须直接在 php.ini 文件中更改设置,这是通过 SSH 访问的任务。
这是为什么?
这虽然很好,但有点烦人,因为我在共享服务器上有 12 个域,我不一定想全面设置设置....
【问题讨论】:
如果它是针对经销商的产品,可能是为了防止您的客户/客户/用户随意更改 php.ini 设置,这通常是明智的做法。
但是如果你有机器的完全访问权限,你不应该可以重新激活ini_set吗?
【讨论】:
就像 Pekka 说的,如果你可以通过 SSH 修改你的 php.ini,然后尝试在那里更改它。
关闭safe_mode并检查disable_functions的内容
此指令允许您出于安全原因禁用某些功能。它采用逗号分隔的函数名称列表。 disable_functions 不受安全模式的影响。该指令必须在 php.ini 中设置,例如,您不能在 httpd.conf 中设置。
【讨论】:
VPS 提供商倾向于强制他们的用户使用最安全的环境。禁用ini_set() 通常是一种很好的安全实践,因为您可以很容易地在 PHP 代码中使用eval() 语句,该语句使用 GET/POST/SESSION 变量作为输入,例如。我相信如果safe_mode 打开,ini_set() 默认会被阻止。我想任何共享托管服务提供商都会强制执行safe_mode。
【讨论】:
您能否详细介绍一下服务器组件。 PHP 作为 CGI 或 mod_php。 PHP 是否启用了 suPHP 或其他保护系统? 可以使用 .htaccess 文件更改某些选项。您是否可以直接访问 httpd.conf 文件?在那里你可以启用 ini_set() -> http://php.net/manual/en/configuration.changes.php
【讨论】: