从外部PHP文件在不同的服务器上的PHP echo变量


PHP echo variable from external PHP file on different server

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

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

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

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

Server 1:

<?php
$version = "1.0.0";
echo $version;
服务器2:

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

(假设服务器1可以通过web访问服务器2)


编辑:在注释之后,如果您希望访问多个变量,您可以使用:

服务器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'];

这应该是相当不言自明的-任何问题都可以通过评论…

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

另一种方法是include(),但这是一个很大的安全漏洞,php.ini默认不允许这个选项。

也许这对你有用,而不是上面的代码,你应该这样做

<?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。

远程服务器上的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