我有一个名为generator.php
的文件,它使用fwrite()
在服务器(Apache,PHP4)上创建result.php
。由fwrite()创建的文件中包含()的PHP4 PHP4问题
result.php
中的其中一行是PHP include()
声明。
所以,在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 -->
但是,当我在浏览器中访问result.php
是include()
声明不起作用。 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'd文件(工作)是
0775
,而使用fwrite()创建的文件(包括不工作)具有664
,并且被generator.php
修改为0775
。 - 工作
test.php
文件在Mac上用Smultron编辑并通过FTP上传,而result.php
由fwrite()
在Linux上由generator.php
创建,由浏览器调用。
您是否尝试过使用FTP浏览器下载result.php并手动检查它们是否相同?另外,当您访问result.php时(无论是在页面上还是在日志中),您是否会遇到任何错误? – 2009-11-21 01:01:57
我实际上从result.php中截取了两行代码(通过FTP获取它)并创建了test.php .. 另外,如果我用'require'替换'include',那么它只是停在那句话上。 – Pranab 2009-11-21 02:42:12
文件在执行之前是否关闭?另外,我们可以看到两个生成的文件吗? – wallyk 2009-11-21 00:58:45