Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 函数文件_get_contents()出错:是否涉及dns?_Php_Apache_Webmin - Fatal编程技术网

Php 函数文件_get_contents()出错:是否涉及dns?

Php 函数文件_get_contents()出错:是否涉及dns?,php,apache,webmin,Php,Apache,Webmin,我正在尝试运行一个托管在远程虚拟服务器上的小型网站 当我通过Apache2.0在本地运行测试时,我的代码运行得很好 现在它是远程托管的(Apache2+Webmin+最新版本的PHP),似乎我对著名的函数文件\u get\u的内容有一些问题。看起来我的服务器不允许解析任何外部域 我读过多个主题,尝试过许多解决方案,但似乎到目前为止没有一个有效 这是我有问题的函数 $url='https://bitpay.com/api/rates'; $json=json_decode( file_get_co

我正在尝试运行一个托管在远程虚拟服务器上的小型网站

当我通过Apache2.0在本地运行测试时,我的代码运行得很好

现在它是远程托管的(Apache2+Webmin+最新版本的PHP),似乎我对著名的函数文件\u get\u的内容有一些问题。看起来我的服务器不允许解析任何外部域

我读过多个主题,尝试过许多解决方案,但似乎到目前为止没有一个有效

这是我有问题的函数

$url='https://bitpay.com/api/rates';
$json=json_decode( file_get_contents( $url ) );
$dollar=$btc=0;

foreach( $json as $obj ){
    if( $obj->code=='USD' )$btc=$obj->rate;
}

echo "1 bitcoin=\$" . $btc . "USD<br />";
$dollar=1 / $btc;
echo "10 dollars = " . round( $dollar * 10,8 )."BTC";

exit();
我试图在我的服务器上找到文件etc/host,但它不存在

我不知道如何设置/参数任何主机名

我的Webmin面板中没有很多选项,所以我想知道我能做些什么来解决这个问题

我在代码中添加了一行
allow\u url\u fopen=on
,但它也不起作用

最后,我尝试了你们很多人建议的卷发替代方案


但是当我尝试
回显
打印
输出/结果时,我得到了一个空白页。甚至没有一条错误消息。

文件获取内容不允许获取外部url,直到“允许url”打开。 因为您已经将其设置为On。您可以尝试以下代码:

<?php

function get_content($URL){
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_URL, $URL);
      $data = curl_exec($ch);
      curl_close($ch);
      return $data;
}

echo get_content('https://bitpay.com/');

?>


但是,页面无法正确加载,因为在目标站点上使用了资源(图像、脚本等)的绝对路径。所以需要找到完整URL的路径。

我对php.ini文件做了一些更改

下面是我当前php.ini文件的内容

allow_url_fopen = On;
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
但我意识到了一件有趣的事:关于这条线

ini设置(“显示错误”,1)

如果我没有将其添加到代码所在的php文件中,则不会显示错误。似乎我的ini文件不是正确的位置,或者服务器没有考虑到它

我真的很困惑,因为它与本地主机非常不同

我觉得我的服务器配置为空


在etc目录中找不到任何配置文件,并且我的php.ini文件显然“不工作”。

任何人都可以在没有访问hosts.conf文件的情况下解决此问题?

那么url:重定向到:。此外,url内容不是JSON格式,但您使用的是JSON,看起来您的服务器无法连接到外部世界。如果您有权限,请尝试将
/etc/resolv.conf
文件中的名称服务器更改为其他名称服务器。嘿,我的错,url是:$url='';“看起来您的服务器无法连接到外部世界。如果您有权限,请尝试将/etc/resolv.conf文件中的名称服务器更改为其他名称服务器。”我希望可以,但我没有选择。我的服务器上没有resolv.conf文件,我的Webmin窗格也没有显示与这些配置文件相关的任何内容“我在代码中添加了allow\u url\u fopen=on行”-如果您的代码是?这是php.ini的配置设置,而不是代码中应该包含的内容。我创建了一个php.ini文件,该文件已上载到我的public_html文件夹中,因为我的服务器上不存在任何.ini文件。如果那样做不对,就阻止我。无论如何,是的,我已经确保包括行allow\u url\u fopen=on,但它没有解决我的问题。至于卷曲示例/备选方案。以前我试过很多次,因为我在很多帖子上都把它看作是一个解决方案,但它返回给我的是一个空白页面。无结果,无错误尝试转储curl资源对象,查看是否缺少任何内容。顺便说一句,我已经使用了这个代码,它工作得很好。在这里查看:我无法在任何cURL函数中解析主机。我试了一次又一次。我开始怀疑我的主机提供商只是在他们这方面禁用了对https请求的访问。可能吗?因为到目前为止,我试图交替地打开和关闭allow_url_fopen和allow_url_include,但没有改变任何事情。
allow_url_fopen = On;
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);