2011-07-23 6 views
1

私はクラスでfile_exists()を使用しています。ファイルが存在するかどうかを確認するために、別のフォルダに含まれている場合と同様に、ルートでも使用したいと思います。php direct path file_exists()

は、私が現在持っている:ルートに含まれるが、(AJAX用)フォルダに含まれていない場合

if (file_exists("./photos/".$this->id.".jpg")){ 

// 

} 

それは動作します。

私はそれをダイレクトにするために何ができるのですか(私は正しい単語だと思います)?私は機能の性質のために私はそれに私のサイトのURLを置くことができません。

+0

私はこのような構造を持っています。?/classes/class.phpおよび/写真 – Jake

答えて

2

最も簡単な方法は、絶対(フル)パスを使用することです:

if (file_exists("/full/path/to/photos/".$this->id.".jpg")){ 
    // 
} 

この方法で、あなたのスクリプトが実行された場所から関係なく、常に変わることのない完全な道は、常に働くでしょう。もちろん

、あなたはおそらく


だから、あなたは、ファイルを含むディレクトリへのフルパスを取得するために dirname(__FILE__)を使用することができます...あなたのPHPスクリプトにハードコードへのフルパスをしたくありませんそこにあなたが書いたのは dirname(__FILE__)で、そこからは相対的なものになります。例えば

$path = dirname(__FILE__) . '/../../files/photos/'.$this->id.".jpg"; 
if (file_exists($path)) { 
    // 
} 

を(これをテストしている間、あなたは正しい道を得たことを確認するために、まず、$pathの値を表示したい場合があります)


注: PHP> = 5.3で作業している場合はdirname(__FILE__)の代わりに__DIR__を使用できます。


関連マニュアルページ:__DIR____FILE__含む

  • dirname()
  • Magic constants

      、。あなたのコードを含むクラスの同じレベルで "写真" フォルダを仮定し
  • 0

    ルートディレクトリからコードにフルパスを入れるだけでいいようです。

    if (file_exists("/root_dir/path/to/photos/".$this->id.".jpg")) 
    
    +0

    私はこのパスを見つけるにはどうすればよいのおかげ – Jake

    +0

    ちょうどsshやftp経由でサーバーにログインし、トラバースあなたのウェブルートが "public_html"(ほとんどのホストに共通)であれば、パスは/で始まり、ルートディレクトリから始まることを指示します。だから/ public_html/another_directory/etc/photos/ –

    0

    それは関係なく、それが直接呼び出すか含まれているかどうかのPHPファイル自体のパスを取得するためにdirname(__FILE__)を使用して、多かれ少なかれ一般的です。だからあなたのような状況で、あなたは書くことができます:

    if(file_exists(dirname(__FILE__) . '/photos/'.$this->id.'.jpg')) 
    
    +0

    これは動作しませんでした – Jake

    0

    if (file_exists(dirname(__FILE__)."/../photos/".$this->id.".jpg")){ 
    
    // 
    
    } 
    
    +0

    私はこの構造を持っています:/classes/class.phpと/ photos – Jake

    +0

    あなたの情報に基づいてコードを更新しました。 –

    0

    のdirname(FILE)=」../ "

    DIRNAME(DIRNAME(FILE))=" ../../ "

    DIRNAME(DIRNAME(DIRNAME(FILE)))=" ../../ .. /」

    Uはそのを試すことができます

    関連する問題