来自不同服务器上的外部PHP文件的PHP echo变量

时间:2013-03-07 00:01:22

标签: php variables fopen

我在一个单独的服务器(服务器1)上有一个非常基本的PHP文件,它实际上包含以下内容:

<?php $version = "1.0.0"; ?>

在我的服务器2上的PHP文件中,我想做的只是回显这个变量。我尝试过使用get_file_contents(),但我认为这是针对同一台服务器上的文件。所以我也尝试使用类似的东西,但也使用fopen(),这导致资源ID#93

环顾谷歌,我发现了很多不同的例子,但我基本上想要一个简短的例子。有人能指出我正确的方向吗?

3 个答案:

答案 0 :(得分:3)

服务器1:

<?php
$version = "1.0.0";
echo $version;

服务器2:

<?php
$version = file_get_contents('http://server1.com/script.php');

(假设服务器1可从服务器2访问Web)


编辑:继续发表评论后,如果您希望访问多个变量,可以使用:

服务器1:

<?php
$version = "1.0.0";
$name = 'this is my name';
echo json_encode(compact('version','name'));

服务器2:

<?php
$data= json_decode(file_get_contents('http://server1.com/script.php'),true);
echo 'my version is:'.$data['version'];

这应该是相当自我解释的 - 通过评论提出任何问题..

答案 1 :(得分:1)

file_get_contents仅用于读取文件的输出,并且您显示的示例没有任何类型的输出。如果你真的想这样做,你应该回应一些数据,这样你就可以用get_file_contents来获取它。

另一个方法是包含()它,但这是一个很大的安全漏洞,php.ini默认情况下不允许这个选项。

Mabe这适合你,而不是上面的代码,你应该做类似的事情

<?php echo "1.0.0"; ?>

然后在其他地方你可以这样做:

<?php
    $path = "http://www.somepage.com/version.php";
    $version = file_get_contents(urlencode($path)); 
?>

但是请注意,如果希望file_get_contents能够处理远程文件,则需要修改php.ini。您需要将指令 allow_url_fopen 修改为true。

答案 2 :(得分:0)

远程服务器上的PHP文件是否像apache一样托管在Web服务器上?它是如何托管的?您可以尝试使用curl

$url = "http://<ip_or_domain_of_remote_server>/your_file.php";
$ch = curl_init();  
curl_setopt($ch,CURLOPT_URL, $url);
$result = curl_exec($ch);
echo $result

您还应该确保您的端口在远程服务器上是打开的,并且您的文件具有适当的权限

另外,使用curl,你可以将变量传递给远程php脚本,如下所示:

 $url = "http://<ip_or_domain_of_remote_server>/your_file.php";
 $data = array("key0"=>"val0","key1"=>"val1");
 $ch = curl_init(); 
 curl_setopt($ch,CURLOPT_URL, $url);
 curl_setopt($ch,CURLOPT_POST, count($data));       
 curl_setopt($ch,CURLOPT_POSTFIELDS, $data);
 $result = curl_exec($ch);
 echo $result