ini_set() 没有被阻止,但我得到 "Warning: ini_set() has been disabled for security reasons"
ini_set() is not blocked, yet I get "Warning: ini_set() has been disabled for security reasons"
我为这个奇怪的问题苦思了好几个小时。我的 Magento 显示错误:
Exception #0 (Exception): Warning: ini_set() has been disabled for security reasons
/path/to/vendor/magento/framework/Session/SessionManager.php
on line 598
这是第 598 行的样子:
598: $result = ini_set('session.use_only_cookies', '1');
奇怪的部分来了。当我在此行 598 上方添加以下内容时:
597: echo ini_get('disable_functions');die;
598: $result = ini_set('session.use_only_cookies', '1');
我明白了:
passthru,shell_exec,system
在此禁用功能列表中没有 ini_set,但不知何故 Magento 设法认为它因“安全原因”而被阻止...
我已经检查了服务器上所有可能的 PHP 配置。 ini_set()
未在任何地方被阻止。这让我很难受。
怎么回事?
编辑 1
我在 Magento 外部创建了一个测试脚本,内容如下:
var_dump(ini_set('display_errors', 'Off'));
var_dump(ini_get('display_errors') );
这是我设置的任何 ini 值...
NULL string(0) ""
您的托管服务提供商启用了 PHP 中内置的一些安全措施。
我的第一个猜测是令人愉快的名字 Snuffleupagus. Among many other things, it features comprehensive control of ini settings 以及以非常精细的方式阻止函数调用的能力。另一方面,我没有看到任何有关禁用 phpinfo() 的信息,您说它没有显示任何内容;并且您的错误消息表明该函数已转换为 no-op 并带有警告,而不是错误。 (随后 Magento 将其提升为异常。)
无论哪种方式,除了联系您的托管服务提供商之外,您很可能无能为力。
我为这个奇怪的问题苦思了好几个小时。我的 Magento 显示错误:
Exception #0 (Exception): Warning: ini_set() has been disabled for security reasons
/path/to/vendor/magento/framework/Session/SessionManager.php
on line 598
这是第 598 行的样子:
598: $result = ini_set('session.use_only_cookies', '1');
奇怪的部分来了。当我在此行 598 上方添加以下内容时:
597: echo ini_get('disable_functions');die;
598: $result = ini_set('session.use_only_cookies', '1');
我明白了:
passthru,shell_exec,system
在此禁用功能列表中没有 ini_set,但不知何故 Magento 设法认为它因“安全原因”而被阻止...
我已经检查了服务器上所有可能的 PHP 配置。 ini_set()
未在任何地方被阻止。这让我很难受。
怎么回事?
编辑 1
我在 Magento 外部创建了一个测试脚本,内容如下:
var_dump(ini_set('display_errors', 'Off'));
var_dump(ini_get('display_errors') );
这是我设置的任何 ini 值...
NULL string(0) ""
您的托管服务提供商启用了 PHP 中内置的一些安全措施。
我的第一个猜测是令人愉快的名字 Snuffleupagus. Among many other things, it features comprehensive control of ini settings 以及以非常精细的方式阻止函数调用的能力。另一方面,我没有看到任何有关禁用 phpinfo() 的信息,您说它没有显示任何内容;并且您的错误消息表明该函数已转换为 no-op 并带有警告,而不是错误。 (随后 Magento 将其提升为异常。)
无论哪种方式,除了联系您的托管服务提供商之外,您很可能无能为力。