在不同服务器上的两个文件之间切换php变量

在不同服务器上的两个文件之间切换php变量,php,Php,好的,我在服务器1上有a.php,在服务器2上有b.php 假设a.php包含: <?php $google = 'www.google.com'; ?> <?php require('http://[server #1]/a.php'); echo $google; ?> 而b.php包含: <?php $google = 'www.google.com'; ?> <?php require('http://[server #1]/a.php

好的,我在服务器1上有a.php,在服务器2上有b.php

假设a.php包含:

<?php
$google = 'www.google.com';
?>
<?php
require('http://[server #1]/a.php');
echo $google;
?>

而b.php包含:

<?php
$google = 'www.google.com';
?>
<?php
require('http://[server #1]/a.php');
echo $google;
?>


基本上这是行不通的,如何在不编辑php.ini的情况下使其工作D

您无法在其他服务器上访问远程php文件的源代码。最好的方法是创建一个类似API的东西(设置一个特殊的键):


使用JSON,读取全局变量并将其导出为JSON字符串,然后在接收端使用extract()将变量恢复到全局范围

服务器A上的config.php

// Define your Variables
$google = 'www.google.com';
$string = 'foobar';
$int = 1;
$bool = true;

// JSON Export
echo json_encode(array_diff_key(get_defined_vars(),array_flip(array('_GET','_POST','_COOKIE','_FILES','_ENV','_REQUEST','_SERVER'))));
服务器B上的application.php

// JSON Import
extract(json_decode(file_get_contents('http://www.domain.com/config.php'),true));

// Now test your Variables
var_dump($google); // Now the $google variable exists
var_dump($string);
var_dump($int);
var_dump($bool);

您可以在该代码中创建自己的安全机制以满足您的需求。我更希望您在传输端和接收端使用特定的变量列表,这种使用get_defined_vars()和extract()的方法并不理想,但是,由于您的目标是控制风险的特定URL,因此风险被最小化。

您认为PHP.INI需要编辑的原因是什么?@Mike-W您可以在PHP.INI中将allow_URL_include设置为1,这样就可以了,但我需要另一种方法问题是您的web服务器将提供已执行版本的脚本输出,唯一的方法是通过其他方式(如JSON或XML)公开PHP脚本内容。这就是开发人员创建API的原因。我认为我们需要了解更多,以便能够帮助您尝试解开您试图实现的目标。帮助我们帮助您。为什么需要包含其他服务器上的代码?您是否控制这两台服务器?您不想将
a.php
b.php
放在同一台服务器上有什么原因吗?是的,我在两台服务器上都有控制权,但如果我要调用的变量是随机变量,我想这是行不通的:(我做了一个显示整个源代码的选项。一旦你有了整个源代码,只需将其检索成一个字符串,删除“show_source(file)”,并使用“eval”在本地php文件中执行它。或者你可以按照Scuzzy所说的做。警告:json_encode()[function.json encode]:在第9行的../config.php中检测到递归,然后使用
var\u转储(
而不是
echo json\u解码(
)找出递归发生的位置,并通过
数组(“获取”、“发布”和…)将索引添加到排除列表中。