file_get_contents上的访问被拒绝

时间:2015-09-07 03:44:23

标签: php mysql

我在000webhost上有一个免费的主机,我有一个MySQL数据库,我存储数据。

我发现由于某种原因我只能从该网站连接到该数据库。如果我要复制和粘贴,比如说,从该服务器到另一个服务器的index.php,我会被拒绝访问。

我的目标是从该数据库中获取一些数据并将其显示在另一台服务器上,因为直接方法不起作用,我在db服务器上创建了一个文件,该文件将在本地运行查询而另一个文件在另一台服务器上运行这将使用file_get_contents()函数来获取数据。

加载文件(在带有db的服务器上)

mysql_connect($host, $username, $password)or die("cannot connect"); 
mysql_select_db($database)or die("cannot select DB");


$Qry = mysql_query("SELECT * FROM dctt_users ORDER BY FirstSave");
$num = mysql_num_rows($Qry);
$Qry2 = mysql_query("SELECT TimesSaved FROM dctt_users WHERE UserName = 'Default Name' ORDER BY FirstSave");
$line = mysql_fetch_array($Qry2);
$num = $num + $line['TimesSaved']-1;
echo $num;

获取文件(在与mysql数据库无关的服务器上)

$filename = "http://blink-forum.site90.com/dctt/test.php";
$content = file_get_contents($filename);
echo $content;

即使它看起来确实应该可以正常工作,但事实并非如此。

有没有人知道这方面的解决方案,或者即使我有办法直接连接?

2 个答案:

答案 0 :(得分:2)

来自the manual(强调我的):

  

如果已启用fopen包装,则可以使用此函数将URL用作文件名

我打赌你的超便宜的虚拟主机没有启用此功能,以防止用户使用带宽报废网站等。当您通过http。

请求页面时,文件驻留在同一服务器上的事实无关紧要

另一种方法是使用cURL发出http请求并获取响应。

<?php 
        // create curl resource 
        $ch = curl_init(); 

        // set url 
        curl_setopt($ch, CURLOPT_URL, "example.com"); 

        //return the transfer as a string 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

        // $output contains the output string 
        $output = curl_exec($ch); 

        // close curl resource to free up system resources 
        curl_close($ch);      
?>

答案 1 :(得分:1)

在某些配置中,MYSQL仅接受来自localhost的连接(与数据库在同一服务器上的脚本)。您的控制面板中应该有一些内容可以说明远程数据库主机的内容。您需要在那里配置对数据库的远程访问。

以下是cPanel的截图,如果这是您的主机使用的: enter image description here