【问题标题】:allow_url_open needs to be onallow_url_fopen 需要打开
【发布时间】:2012-03-30 20:56:54
【问题描述】:

我需要将服务器端 php.ini 的配置(参数是 allow_url_fopen)从 off 更改为 on,但我无权访问 php.ini 文件,我想通过 php 代码来完成,但我不知道 wat怎么做以及在哪里粘贴该代码(我应该把它放在我用来下载文件的标题之前吗???)

header('Content-disposition: attachment; filename=' . basename($fileName));
header('Content-Type: application/force-download');
header('Content-Type: application/octet-stream');
header('Content-Type: application/download');
header('Content-Description: File Transfer'); 

ob_clean();
flush();
readfile($finalFileName);
exit; 

提前感谢

【问题讨论】:

  • php.ini 文件在运行时由 webserver/apache 解析。如果您的主机不允许该功能或安全模式已打开,那么您无法更改它。我不确定您的代码示例与 allow_url_fopen 有什么关系,如果它是本地的,您可能不需要该功能,您是否考虑过使用 curl 检索文件,大多数主机允许 curl
  • 默认情况下 allow_url_fopen 是打开的,但如果它被主机关闭,那么它可能是被禁止的,另一个解决方案是将 php.ini 放在你的根目录中并根据需要进行更改。我在我的一些图形解决方案中使用了它并且确实有效。祝你好运

标签: php


【解决方案1】:

不建议使用该选项。 相反,您应该使用 curl 库。

function getUrlContent($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,  FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

【讨论】:

【解决方案2】:

有一个名为 ini_set 的函数可以即时设置 php ini 值。但是在您的情况下,它需要您的服务器的适当许可才能使用此功能。您可以联系您的托管服务提供商。

最好的解决方案是使用 cURL,因为大多数服务器都启用了它。

【讨论】:

    【解决方案3】:

    您可以使用ini_set()更改属性,并使用ini_get()查看它们,试试这个:

    echo ini_get('allow_url_fopen');
    
    if (!ini_get('allow_url_fopen')) {
        ini_set('allow_url_fopen', 1);
    }
    
    echo ini_get('allow_url_fopen');
    

    您也可以尝试.user.ini 来更改它,这就像 php.ini 的 .htaccess 但您的系统管理员可以拒绝任何这些东西,所以就像其他人所说的那样检查 curl

    【讨论】:

      【解决方案4】:

      您想在这里实现什么目标?如果您只是想在本地链接上强制下载,请使用文件系统路径(如 readfile('./filename.ext'))而不是 URL。如果您必须强制下载已下载的文件,请按照 Soaica Mircea 的建议进行操作并使用 CURL。

      allow_url_fopen 设置为关闭是有原因的,因为它会产生难以预测的结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-15
        • 2018-09-16
        • 2012-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多