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

使用file_put_contents写入PHP文件仅返回1、内容写入失败如何解决?

问题成因

你代码中file_put_contents($php_name, include "nav.php");的写法存在逻辑错误:
PHP的include语句的核心作用是引入并执行目标文件内容,执行成功时返回值为整数1,并不会把nav.php的原始代码或者运行输出的内容作为字符串返回。最终你写入新文件的内容就是include执行成功的返回值1,就是你观测到的现象的根本原因。

修复方案

根据你的实际需求选择对应写法:

  • 如果你需要把nav.php的原始代码原封不动写入新文件,直接读取文件内容写入即可:
file_put_contents($php_name, file_get_contents("nav.php"));
  • 如果你需要把nav.php运行后输出的动态内容写入新文件,需要用输出缓冲捕获运行结果再写入:
// 开启输出缓冲区
ob_start();
include "nav.php";
// 取出缓冲区内容并清空缓冲区
$nav_run_result = ob_get_clean();
// 写入内容到目标文件
file_put_contents($php_name, $nav_run_result);
安全提示

你当前直接使用用户传入的$_REQUEST["php_name"]作为写入文件名,存在严重的路径穿越安全漏洞:恶意用户可以构造../../webshell.php这类参数值,向服务器任意可写目录写入恶意脚本,建议对文件名做严格的格式校验、限制写入路径到指定目录,禁止传入路径分隔符等特殊字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 05:45:02