You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从外部域名调用PHP变量?多站点统一配置需求咨询

问题描述

我有一个位于domain1.com/script1.php的PHP脚本,内容如下:

//my database connections, check functions and values, then, load:

$variable1 = 'value1';
$variable2 = 'value2';

if ($variable1 > 5) {
    $variable3 = 'ok';
} else {
    $variable3 = 'no';
}

需要在25个不同域名、服务器及IP的站点(如domain2.com/site.php、domain3.com/site.php等)中调用该脚本内的变量,实现单个文件统一控制所有站点,避免逐个复制修改脚本。目标站点的site.php需要实现:

echo $variable1 . $variable2 . $variable3; //loaded by script.php another domain

限制条件:

  • 无法使用URL GET传参(如?variable1=abc)
  • 仅具备基础PHP能力,对其他技术了解有限
  • 需要低成本方案,可选方向包括API、Cookie、Javascript、JSON或PHP跨域include等
可行低成本方案

方案1:将script1.php改造为JSON接口(最推荐)

这是最稳妥、符合跨域规范的方案,不需要复杂配置,适配基础PHP能力的开发者。

改造domain1.com/script1.php

保留原有逻辑,新增跨域响应头并将变量输出为JSON格式:

// 原有的数据库连接、校验逻辑保留
$variable1 = 'value1';
$variable2 = 'value2';

if ($variable1 > 5) {
    $variable3 = 'ok';
} else {
    $variable3 = 'no';
}

// 允许所有域名跨域请求(如需限制,把*换成具体域名,多个用逗号分隔)
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json");

// 打包变量为JSON输出
echo json_encode([
    'variable1' => $variable1,
    'variable2' => $variable2,
    'variable3' => $variable3
]);

目标站点site.php调用方式

用PHP请求接口并解析JSON:

// 请求接口获取数据
$jsonData = file_get_contents('https://domain1.com/script1.php');
// 解析为PHP数组
$variables = json_decode($jsonData, true);

// 提取变量使用
$variable1 = $variables['variable1'];
$variable2 = $variables['variable2'];
$variable3 = $variables['variable3'];

// 输出结果
echo $variable1 . $variable2 . $variable3;

如果file_get_contents被服务器禁用,改用curl:

$ch = curl_init('https://domain1.com/script1.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$jsonData = curl_exec($ch);
curl_close($ch);

$variables = json_decode($jsonData, true);
// 后续变量提取和输出同上

方案2:PHP跨域include(需服务器配置支持)

如果所有站点服务器允许,且allow_url_include配置开启,可直接远程引入脚本,但风险较高(脚本被篡改会影响所有站点)。

前置配置检查

确保domain1.com的php.ini中allow_url_fopen = On,目标站点的php.ini中allow_url_include = On(默认多为关闭状态,需修改配置)。

目标站点site.php调用方式

// 直接引入远程脚本
include 'https://domain1.com/script1.php';

// 直接使用变量
echo $variable1 . $variable2 . $variable3;

方案3:JavaScript前端加载

若仅需前端展示变量,可通过JS请求接口后渲染:

改造domain1.com/script1.php(同方案1的JSON接口)

同上,输出带跨域头的JSON数据。

目标站点site.php添加JS代码

<!-- 在site.php的HTML中插入这段代码 -->
<script>
fetch('https://domain1.com/script1.php')
  .then(response => response.json())
  .then(data => {
    // 拼接变量并插入页面
    document.write(data.variable1 + data.variable2 + data.variable3);
    // 也可插入到指定元素:document.getElementById('target').textContent = data.variable1 + ...
  });
</script>
向开发者提出的需求(若自行实现有困难)
  • 将domain1.com/script1.php改造为返回JSON格式的跨域接口,允许指定域名(或所有域名)访问
  • 为目标站点的site.php添加调用该JSON接口并解析变量的代码
  • 若采用跨域include方案,协助开启目标站点服务器的allow_url_include配置,并确认安全风险

内容的提问来源于stack exchange,提问作者Cark Blen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 21:48:18