allow_url_fopen 局部变量

Posted

技术标签:

【中文标题】allow_url_fopen 局部变量【英文标题】:allow_url_fopen local variable 【发布时间】:2016-06-16 04:48:35 【问题描述】:

我通过添加两个变量在 phpMyAdmin 中添加了 recaptcha

$cfg['CaptchaLoginPublicKey'] = '网站密钥';

$cfg['CaptchaLoginPrivateKey'] = '密钥';

但我在下面遇到错误。

Warning in ./libraries/plugins/auth/recaptcha/ReCaptcha/RequestMethod/Post.php#68
 file_get_contents(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0

Backtrace

./libraries/plugins/auth/recaptcha/ReCaptcha/RequestMethod/Post.php#68: file_get_contents(
string 'https://www.google.com/recaptcha/api/siteverify',
boolean false,
resource,
)
./libraries/plugins/auth/recaptcha/ReCaptcha/ReCaptcha.php#94: ReCaptcha\RequestMethod\Post->submit(object)
./libraries/plugins/auth/AuthenticationCookie.class.php#366: ReCaptcha\ReCaptcha->verify(
string '03AHJ_VuvVnV4jlI2mNDNogB6eajU4jE--F7ve8zMdP0Xf636gaBeNE_dK9-',
string '10.0.5.1',
)
./libraries/common.inc.php#896: AuthenticationCookie->authCheck()
./index.php#12: require_once(./libraries/common.inc.php)

Warning in ./libraries/plugins/auth/recaptcha/ReCaptcha/RequestMethod/Post.php#68
file_get_contents(https://www.google.com/recaptcha/api/siteverify): failed to open stream: no suitable wrapper could be found

Backtrace

./libraries/plugins/auth/recaptcha/ReCaptcha/RequestMethod/Post.php#68: file_get_contents(
string 'https://www.google.com/recaptcha/api/siteverify',
boolean false,
resource,
)
./libraries/plugins/auth/recaptcha/ReCaptcha/ReCaptcha.php#94: ReCaptcha\RequestMethod\Post->submit(object)
./libraries/plugins/auth/AuthenticationCookie.class.php#366: ReCaptcha\ReCaptcha->verify(
string '03AHJ_VuvVnV4jlI2mNDNogB6eajU4jE--F7ve',
string '10.0.5.1',
)
./libraries/common.inc.php#896: AuthenticationCookie->authCheck()
./index.php#12: require_once(./libraries/common.inc.php)

所以我想为 phpMyAdmin 开启 allow_url_fopen。我将 /etc/php5/apache2/php.ini 和 /etc/php5/fpm/php.ini 更改为

allow_url_fopen = 开启

allow_url_include = 开启

根 phpinfo 显示了正确的设置。

Directive           Local Value    Master Value
allow_url_fopen     On             On
allow_url_include   On             On

但是,在 phpMyAdmin 文件夹中。

Directive           Local Value    Master Value
allow_url_fopen     Off            On
allow_url_include   On             On

所以我尝试在 phpMyAdmin 文件夹中测试 PHP。

ini_set("allow_url_fopen", true);

if (ini_get("allow_url_fopen") == true) echo "allow_url_fopen 为 ON";

else echo "allow_url_fopen 关闭";

打印 ini_get("allow_url_fopen");

打印 ini_get("allow_url_include");

退出;

allow_url_fopen is OFF01

我也尝试在 phpMyAdmin 文件夹中添加 .htaccess。

php_value allow_url_fopen 开启

为什么无法更改phpMyAdmin文件夹中的本地值?

我的服务器是 Debian8.2、PHP5.6.17、phpMyAdmin4.5、mysql5.7,它在防火墙后面。

我知道将全局 allow_url_fopen 设置为 On 很危险。如何将其设置为仅对 phpMyAdmin 文件夹可用?

【问题讨论】:

由于安全问题,您不能即时更改此标志。你需要检查你的 php.ini 配置(php.ini 文件和 webserver 配置中的 php 标志) 所以您的意思是更改 /etc/php5/apache2/php5.ini 中的配置?我更改了根文件夹,但 phpmyadmin 文件夹不起作用。 vhost 文件怎么样? PHP标志有什么变化吗? 【参考方案1】:

谢谢段。是的,你是对的。我修改了虚拟主机,它现在可以工作了。

vim /etc/apache2/conf-available/phpmyadmin.conf

php_admin_flag allow_url_fopen 开启

php_admin_flag allow_url_include 开启

【讨论】:

以上是关于allow_url_fopen 局部变量的主要内容,如果未能解决你的问题,请参考以下文章

java 自变量 局部变量

局部变量

请教局部变量的问题

全局变量 静态变量 局部变量 啥时候创建 啥时候撤销

java中静态成员变量、实例变量、局部变量何时创建、何时销毁?

C语言中的“局部变量”是啥意思?