サーバー上に を作成するためにgenerator.php
使用するというファイルがあります(Apache、PHP4)。fwrite()
result.php
の行の 1 つは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経由で復元した場合、両方のファイルで同じコード。
In 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
か?) - 元々パーミッションが違います。
0775
fwrite() を使用して作成されたファイル (動作していない) は であり、 to664
によって chmod されています。generator.php
0775
- 作業
test.php
ファイルは、Mac で Smultron を使用して編集し、FTP 経由でアップロードしました。Linux でresult.php
作成したファイルは、ブラウザーから呼び出しました。fwrite()
generator.php