PHP4の問題としては、()内のファイルを作成したfwrite()
-
21-09-2019 - |
質問
いというファイルと generator.php
を使用する fwrite()
作 result.php
のサーバ(Apache、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 -->
その include()
算書いま result.php
ブラウザ.エコー文は、ピックアップしました。パスに通知するものとします。
他の 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
, はchmodedのgenerator.php
へ0775
. - 作
test.php
ファイルを編集したMacとSmultron、FTPアップロード、result.php
作成したfwrite()
にgenerator.php
Linuxと呼ばれるからである。
解決 2
PHP4セーフモードがオンのときは、別のuidによって書かれてresult.php
は、別のuidに属し含まれているファイルを、アクセスできなくすることはできません。
実際にはSAFE MODE制限。 UIDが48であるスクリプトがアクセスを許可されていません UID 10010が所有/var/www/vhosts/example.com/httpdocs/ads/sidebar_top.php ライン130上の/var/www/vhosts/example.com/httpdocs/results/result.phpで
私はphp.ini
を開いてsafe_mode_gid = On
に変え、そして私のsafe_mode_include_dir
にディレクトリが含まれて追加することでこれを解決します。
私はまた、変更を有効にするにはApacheを再起動する必要がありました。
他のヒント
fwrite($resultfile, '<?php include($_SERVER["DOCUMENT_ROOT"] . "/inc/footer.php"); ?>' . "\n");
あなたがそこに「余分を持っていた私は考える。