2012-02-13 14 views
48

私のサイトのルートディレクトリにファイルを作成して保存しようとしていますが、ファイルが作成された場所がわかりません...必要ですPHPルートディレクトリにtxtファイルを作成して保存する

$content = "some text here"; 
$fp = fopen("myText.txt","wb"); 
fwrite($fp,$content); 
fclose($fp); 

私はルートに保存するように設定することができます方法:あまりに

可能な場合は毎回上書きするファイルにここでのコードはありますか?

+0

そうですね。スクリプトがあなたのウェブルートにある限り、それは大丈夫です。それを止める唯一のものはあなたの許可です。 – seanbreeden

+1

許可があれば、 '$ fp = fopen("/myText.txt "、" wb ");' –

+0

を試してみてください。悪い考えであり、一見ハッピーであること以外は、完全なパスを指定して十分な権限があることを確認してください。 – Mikhail

答えて

90

スクリプトと同じディレクトリにファイルが作成されています。代わりにこれを試してください。

$content = "some text here"; 
$fp = fopen($_SERVER['DOCUMENT_ROOT'] . "/myText.txt","wb"); 
fwrite($fp,$content); 
fclose($fp); 
+3

ちょうどメモ:これはあなたが書いているディレクトリへの書き込み許可を必要とします。 – mboy

+0

そのファイルにコンテンツを書き込めません。どうしたらいいですか? – huykon225

0

fopen()は、コマンドを実行しているファイルと同じディレクトリにリソースを開きます。つまり、〜/ test.phpファイルを実行している場合、スクリプトは〜/ myText.txtを作成します。

URLの書き換え(MVCフレームワークなど)を使用している場合、ディレクトリにルートindex.phpファイルが含まれていても新しいファイルが作成される可能性があるため、少し混乱することがあります。

また、適切なアクセス許可が設定されている必要があります。また、ファイルに書き込む前にテストする必要があります。以下はデバッグに役立ちます:

$fp = fopen("myText.txt","wb"); 
if($fp == false){ 
    //do debugging or logging here 
}else{ 
    fwrite($fp,$content); 
    fclose($fp); 
} 
9

ApacheでPHPを実行している場合は、DOCUMENT_ROOTという環境変数を使用できます。これは、パスが動的であり、コードを邪魔することなくサーバー間を移動できることを意味します。

<?php 
    $fileLocation = getenv("DOCUMENT_ROOT") . "/myfile.txt"; 
    $file = fopen($fileLocation,"w"); 
    $content = "Your text here"; 
    fwrite($file,$content); 
    fclose($file); 
?>