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