サーバー上に を作成するためにgenerator.php使用するというファイルがあります(Apache、PHP4)。fwrite()result.php
の行の 1 つはresult.phpPHPinclude()ステートメントです。
だから、で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.phpecho ステートメントはそうするので、パスが正しいことがわかります。
test.phpFTPを使用して同じフォルダーにアップロードした同じコードを持つ別のものは、正常に動作します。
FTP経由で復元した場合、両方のファイルで同じコード。
In test.php: (正しく機能し、エコーし、インクルードします。)
<?php
echo $_SERVER['DOCUMENT_ROOT'] . "/ads/sidebar_top.php" . "<hr />";
include($_SERVER['DOCUMENT_ROOT'] . "/ads/sidebar_top.php");
?>
両方が同じフォルダーにあるのに、 (手動で作成) で動作し、(を使用して作成) でinclude()動作しない理由は何ですか?test.phpresult.phpfwrite()
ファイル間で私が知っている唯一の違い:
- 所有者は異なる可能性があります (
result.phpユーザーによって作成されませんnobodyか?) - 元々パーミッションが違います。
0775fwrite() を使用して作成されたファイル (動作していない) は であり、 to664によって chmod されています。generator.php0775 - 作業
test.phpファイルは、Mac で Smultron を使用して編集し、FTP 経由でアップロードしました。Linux でresult.php作成したファイルは、ブラウザーから呼び出しました。fwrite()generator.php