【问题标题】:fopen is not working on my serverfopen 无法在我的服务器上运行
【发布时间】:2012-01-27 19:09:04
【问题描述】:

它在带有 Xampp 的 localhost 上完美运行,但是当我在我的服务器 (host-ed.net) 上尝试它时,fopen 无法打开任何 url,它只适用于没有 http 的文件。

<?php
$file="http://www.google.es";
$gestor = fopen($file, "r") or die ("Nothing");
?>

在我的服务器中,这段代码显示什么都没有。可以是 php.ini 上的任何内容吗?

编辑:在 php.ini 中:allow_url_fopen = On

编辑:解决了。我的服务器已禁用它,但现在它已启用。感谢您的回答。

【问题讨论】:

  • 具体来说,您的服务器禁用了什么,您采取了哪些步骤来启用它?

标签: php


【解决方案1】:

您有免费的托管帐户吗?大多数托管服务限制免费帐户的传出连接以防止滥用。试试这个:

$fp = fsockopen("some.alive.site", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    echo "Everything is OK";
    fclose($fp);
}

如果您看到错误消息 - 您不能进行传出连接。

【讨论】:

    【解决方案2】:

    fopen 打不开任何网址

    检查allow_url_fopen php.ini setting的值:

    var_dump(ini_get('allow_url_fopen'));
    

    这可能是错误的。您需要与您的虚拟主机交谈,或尝试其他方法。 Mabye CURL 已启用?

    您还应该检查您的 error_reportingdisplay_errors 值。 PHP 应该大声抱怨无法打开 URL。在开发代码时,您需要将它们都调高,这样您就可以更容易地了解哪里出了问题。

    【讨论】:

    • 对不起,我忘记写了……没关系。 allow_url_fopen = 开启
    • 在这种情况下,您需要检查错误报告级别并确保可以显示错误。然后 PHP 可以告诉你实际出了什么问题。
    【解决方案3】:

    【讨论】:

    【解决方案4】:

    使用fopen 打开网址的权限由php.ini 设置allow_url_fopen 控制。您可以使用phpinfo() 查看您当前的设置,这将转储一个包含所有服务器设置的 html 文档。

    【讨论】:

      【解决方案5】:

      正如http://php.net/manual/en/function.fopen.php 所说,

      如果文件名的格式为“scheme://...”,则假定它是一个 URL,PHP 将搜索该方案的协议处理程序(也称为包装器)。如果没有注册该协议的包装器,PHP 将发出通知以帮助您跟踪脚本中的潜在问题,然后继续执行,就像 filename 指定常规文件一样。

      因此,我假设没有注册的 url 包装,而 php 将其视为不存在的常规文件名。

      【讨论】:

        【解决方案6】:

        如果您使用的是 PHP-FPM,还请检查 pool.d/ 中的配置文件。 PHP-FPM 池可以使用 php_admin_flagphp_admin_valuephp_flagphp_value 覆盖 php 设置。 (我们在 Ubuntu 16 vps 上遇到过这种情况)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-06-10
          • 1970-01-01
          • 2018-01-11
          • 2015-11-03
          • 2013-02-20
          • 1970-01-01
          • 2017-10-30
          • 2014-05-04
          相关资源
          最近更新 更多