【问题标题】:allow_url_fopen is on but phpinfo says offallow_url_fopen 开启,但 phpinfo 关闭
【发布时间】:2017-09-18 11:47:03
【问题描述】:

自从我将服务器更新到 PHP7 或为我的服务器启用 AutoSSL 后,我一直无法上传文件。我的错误如下

fopen(): https:// wrapper is disabled in the server configuration by allow_url_fopen=0

我不知道 allow_url_fopen=0 是从哪里来的,因为在全局 php.ini 和子域内的 php.ini 中都使用了声明

allow_url_fopen=On
allow_url_include = On

在 phpinfo() 中,我看到我的 php.ini 文件在哪里...

Configuration File (php.ini) Path   /opt/cpanel/ea-php70/root/etc
Loaded Configuration File   /opt/cpanel/ea-php70/root/etc/php.ini

当我打开这个 php.ini 文件时,我看到 allow_file_fopen 是“开启”

; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
; http://php.net/allow-url-fopen
allow_url_fopen = On

; Whether to allow include/require to open URLs (like http:// or ftp://) as fil$
; http://php.net/allow-url-include
allow_url_include = On

但在同一个 phpinfo() 文件中,我看到 allow_file_fopen 已关闭

Directive   Local Value Master Value
allow_url_fopen Off Off
allow_url_include   Off Off

从另一个堆栈交换线程告诉我尝试以下代码,结果它是关闭的

if (ini_get("allow_url_fopen") == 'On') {
echo "allow_url_fopen is ON";
} else {
echo "allow_url_fopen is OFF";
}   

之前我确实通过在我的控制器中使用以下代码来实现此功能,但这不再起作用,原因我不知道

ini_set('allow_url_fopen',1);

我正在使用 Laravel 5.2 和图像干预包来处理上传的图像。正如我所说,这一切都在 PHP7 和 AutoSSL 之前工作

我错过了什么?

【问题讨论】:

  • 您在修改 php.ini 后是否重新启动了您的网络服务器(Apache?)?
  • 是的,我做到了。但仍然没有任何改变
  • 请输入php --ini,看看您的安装是否也在加载其他ini文件。如果是这样(尤其是使用 cpanel),则可能会在附加的 ini 文件中禁用该设置,因此会覆盖您的(手动)设置。
  • 使用 "echo 'Current PHP version: ' . phpversion(); "来检查 php 版本。如果不是 php7 则编辑相应的 ini 文件
  • @Confused - Current PHP version: 7.0.18

标签: php


【解决方案1】:

通过编辑“MultiPHP INI 编辑器”部分,我能够找到在 WHM 中关闭 allow_url_fopen 的位置。从那里我选择了PHP7。它给我的第一个选项是启用allow_url_fopen。这解决了我的错误。

我完全找不到通过 SSH 禁用 allow_url_fopen 的位置。我想这是因为我不了解从 PHP5 到 PHP7 的升级过程,并且我只通过 cPanel 为每个帐户启用了 PHP7,尽管 Root 似乎仍在使用 PHP5 for php.ini。

【讨论】:

【解决方案2】:

我遇到了同样的问题。池的配置被禁用的选项:

A) 首先我试图找出哪个文件正在修改设置:

    # cd /etc/php
    # grep -r allow_url_fopen

7.3/fpm/pool.d/worpresspool1.conf:php_admin_flag[allow_url_fopen] = off
7.3/fpm/php.ini:allow_url_fopen = On
7.3/cli/php.ini:allow_url_fopen = On

B) 然后我编辑了文件

    # vi /etc/php/7.3/fpm/pool.d/worpresspool1.conf 

并用;评论以上行:

    ;php_admin_flag[allow_url_fopen] = off

C) 就我而言,我已经重新启动了 php-fpm 服务,因为我使用的是 Fast-cgi

    # systemctl restart php7.3-fpm

【讨论】:

  • 不错的答案,但您可能希望通过使用代码标签来改进格式,并为您的 A、B 和 C 标头加粗。
  • 谢谢nettie,我要学习了。也请原谅我的英语不好。我尝试按照您的建议进行改进。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-18
  • 1970-01-01
  • 2018-04-24
  • 2019-04-23
相关资源
最近更新 更多