2013-03-07 48 views
2

上我有一个单独的服务器上的一个非常基本的PHP文件(服务器1),从字面上包含以下内容:PHP回声从外部PHP文件变量不同的服务器

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

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

在谷歌环顾四周,我发现这么多不同的例子,但我基本上是想有一个短期和简单。任何人都可以将我指向正确的方向吗?

+0

没有安全漏洞就不会发生。使用GET或会话与generate_id。 – 2013-03-07 00:06:25

回答

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']; 

这应该是相当自我解释 - 通过评论有任何疑问..

+0

仅当该文件仅输出一个静态变量而没有其他内容时才起作用。 – 2013-03-07 00:05:58

+1

确实 - 但这就是原来的海报问。如果他想要多个变量,我会建议使用序列化或json编码 – dotbill 2013-03-07 00:07:53

+0

谢谢,正是我在找什么。之前基本上是一样的,但是在我定义它之后忘了使用'echo $ version'。 – Lodder 2013-03-07 00:17:32

0

托管在远程服务器上的PHP文件像apache这样的网络服务器?它是如何托管的?您可以尝试使用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 

你也应该确保你的端口是在远程服务器上打开你的文件具有相应的权限

也有卷曲,可以将变量传递到远程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 
+0

我宁愿避免卷曲,但谢谢你的回答 – Lodder 2013-03-07 00:07:21

+0

@Lodder你应该在投票前提到这点。对于你的问题,它是一个有效答案。 – Tucker 2013-03-07 00:08:32

+0

我没有downvote。但是,是的,我应该提到,在我的问题 – Lodder 2013-03-07 00:09:08

1

的file_get_contents只能读取一个文件的输出,而你是显示没有任何类型的输出的例子。如果你真的想这样做,你应该回显一些数据,以便你可以用get_file_contents获取它。

另一个问题是包含()它,但这是一个很大的安全缺陷,php.ini默认不允许使用此选项。

马贝这对你的作品,而不是上面的代码,你应该这样做

<?php echo "1.0.0"; ?>

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

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

但要注意,你需要修改你的php.ini文件,如果你想让file_get_contents在远程文件上工作的话。您将需要修改指令allow_url_fopen为true。