fopen无法在我的服务器上运行

时间:2012-01-27 19:09:05

标签: php

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

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

在我的服务器中使用此代码显示Nothing。可以是php.ini上的任何内容吗?

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

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

6 个答案:

答案 0 :(得分:11)

  

fopen无法打开任何网址

检查allow_url_fopen php.ini setting

的值
var_dump(ini_get('allow_url_fopen'));

这可能是假的。您需要与您的网络托管服务商联系,或尝试其他方法。 Mabye CURL已启用?

您还应该检查error_reportingdisplay_errors值。 PHP应该大声抱怨无法打开URL。在开发代码时,你会希望将它们都完全转向,这样你就可以更容易地理解出错了。

答案 1 :(得分:3)

答案 2 :(得分:2)

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

答案 3 :(得分:0)

http://php.net/manual/en/function.fopen.php所述,

  

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

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

答案 4 :(得分:0)

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

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

如果您看到错误消息 - 则不允许您建立传出连接。

答案 5 :(得分:0)

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