我在一个单独的服务器(服务器1)上有一个非常基本的PHP文件,它实际上包含以下内容:
<?php $version = "1.0.0"; ?>
在我的服务器2上的PHP文件中,我想做的只是回显这个变量。我尝试过使用get_file_contents()
,但我认为这是针对同一台服务器上的文件。所以我也尝试使用类似的东西,但也使用fopen()
,这导致资源ID#93 。
环顾谷歌,我发现了很多不同的例子,但我基本上想要一个简短的例子。有人能指出我正确的方向吗?
答案 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