2009-11-21 31 views
0

我有一个名为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.phpinclude()声明不起作用。 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()创建),当两者在相同的文件夹?

我知道的文件之间的唯一区别:

  1. 所有者可能是不同的(不会result.php用户nobody产生的呢?)
  2. 权限是原来不同。 FTP'd文件(工作)是0775,而使用fwrite()创建的文件(包括不工作)具有664,并且被generator.php修改为0775
  3. 工作test.php文件在Mac上用Smultron编辑并通过FTP上传,而result.phpfwrite()在Linux上由generator.php创建,由浏览器调用。
+0

您是否尝试过使用FTP浏览器下载result.php并手动检查它们是否相同?另外,当您访问result.php时(无论是在页面上还是在日志中),您是否会遇到任何错误? – 2009-11-21 01:01:57

+0

我实际上从result.php中截取了两行代码(通过FTP获取它)并创建了test.php .. 另外,如果我用'require'替换'include',那么它只是停在那句话上。 – Pranab 2009-11-21 02:42:12

+0

文件在执行之前是否关闭?另外,我们可以看到两个生成的文件吗? – wallyk 2009-11-21 00:58:45

回答

0

当PHP4安全模式开启时,result.php,正在写另一个UID,不可不访问所包含的文件,属于另一个UID 。

安全模式限制生效。该脚本,其UID是48不允许访问 /var/www/vhosts/example.com/httpdocs/ads/sidebar_top.php通过UID 10010 拥有/无功/网络/ v主机/ example.com /的httpdocs /结果/结果。上线130

PHP我解决了这个打开php.ini并改变safe_mode_gid = On,并加入我的包括目录safe_mode_include_dir

我还必须重新启动Apache以使更改生效。

0
fwrite($resultfile, '<?php include($_SERVER["DOCUMENT_ROOT"] . "/inc/footer.php"); ?>' . "\n"); 

你有一个额外的“在那里,我认为

+0

这是一个多余的连接,但我认为这与问题无关。 – Pranab 2009-11-21 01:38:26