我有一个名为的文件generator.php
,用于在服务器上fwrite()
创建一个result.php
(Apache,PHP4)。
其中一行result.php
是 PHPinclude()
语句。
所以,在generator.php
:
if (!is_file($fname)){
$resultfile = fopen($current_path . "/" . $fname, "w+");
}
fwrite($resultfile, '<?php include($_SERVER["DOCUMENT_ROOT"] . "'. '/inc/footer.php"); ?>' . "\n");
fclose($resultfile);
chmod($current_path . "/" . $fname, 0755);
并在result.php
:
<h2>Sponsored Links</h2>
<!-- begin sidebar_top ad -->
<?php echo $_SERVER['DOCUMENT_ROOT'] . "/ads/sidebar_top.php" . "<hr />";
include($_SERVER['DOCUMENT_ROOT'] . "/ads/sidebar_top.php"); ?>
<!-- end sidebar_top ad -->
但是include()
当我在浏览器中访问时,该语句不起作用result.php
。echo 语句确实如此,所以我知道路径是正确的。
另一个test.php
具有相同代码的代码,我使用 FTP 上传到同一个文件夹,工作正常。
当通过 FTP 恢复时,两个文件中的代码相同。
在test.php
: (工作,回声并正确包含。)
<?php
echo $_SERVER['DOCUMENT_ROOT'] . "/ads/sidebar_top.php" . "<hr />";
include($_SERVER['DOCUMENT_ROOT'] . "/ads/sidebar_top.php");
?>
当两者都在同一个文件夹中时,知道为什么include()
在test.php
(手动创建)而不是result.php
(使用创建)中工作吗?fwrite()
我所知道的文件之间的唯一区别:
- 所有者可能不同(不会
result.php
由用户创建nobody
?) - 权限本来就不同。FTP 文件(工作)是
0775
,而使用 fwrite() 创建的文件(包括不工作)有664
,并且由generator.php
to chmoded0775
。 - 工作
test.php
文件在 Mac 上用 Smultron 编辑并通过 FTP 上传,而在 Linux 上result.php
由fwrite()
in创建,从浏览器调用。generator.php