2

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

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

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

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

4

3 回答 3

3

服务器 1:

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

服务器 2:

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

(假设服务器 1 可以从服务器 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'];

这应该是不言自明的-通过评论提出任何问题..

于 2013-03-07T00:04:20.863 回答
1

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

另一种方法是 include() 它,但这是一个很大的安全漏洞,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。

于 2013-03-07T00:12:24.843 回答
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

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

此外,使用 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
于 2013-03-07T00:05:41.977 回答