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

PHP+Ajax异步加载Uhome.php输出服务端源码而非执行结果求助

问题根因

你在ajax.php中读取Uhome.php时使用了file_get_contents()直接读取本地文件,该函数仅会返回文件的原始源码,不会触发PHP服务端的解析执行。你加载个人页v时使用的自定义url_get_contents()走CURL发起HTTP请求,才会让服务器执行PHP代码返回渲染后的HTML,两处逻辑不一致导致了问题。

修复步骤

1. 补全ajax.php基础配置

在ajax.php最顶部添加以下代码,开启session并拼接站点根URL:

session_start();
if (isset($_SERVER['HTTPS']) &&
    ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) ||
    isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
    $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
  $ssl = 'https';
} else {
  $ssl = 'http';
}
$app_url = $ssl . "://" . $_SERVER['HTTP_HOST'];

2. 修改Uhome加载逻辑

把ajax.php中对应Uhome的分支代码里的file_get_contents替换为url_get_contents,请求Uhome的HTTP访问地址:

else if($call_type == "./../Uhome")
{
    echo json_encode(array(
        'status'=>'success',
        'title'=> 'Home Page',
        'description' => 'Home description',
        'url' => $call_type.'.php',
        'data'=> url_get_contents($app_url . '/Uhome.php'),
    ));
}

3. 修复settings.php语法错误

你当前settings.php中判断HTTPS的else分支缺少闭合的大括号,会触发PHP语法报错,补上即可:

else {
  $ssl = 'http';
} // 补全这个大括号
$app_url = ($ssl)
          . "://".$_SERVER['HTTP_HOST']
          . (dirname($_SERVER["SCRIPT_NAME"]) == DIRECTORY_SEPARATOR ? "" : "/")
          . trim(str_replace("\\", "/", dirname($_SERVER["SCRIPT_NAME"])), "/");

额外注意

如果你的Uhome.php不在站点根目录,调整url_get_contents里的路径即可,确保该路径直接在浏览器访问时能正常打开Uhome页面。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:54:02