我在单独的服务器(服务器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