2010-12-31 10 views
-1

このコードは以前は動作しましたが、私はC & Pを新しい場所に持っていますし、何らかの理由で今は動作しません!ファイルをチェックするときの構文上の問題

 <? 
     $user_image = '/images/users/' . $_SESSION['id'] . 'a.jpg'; 
     if (file_exists(realpath(dirname(__FILE__) . $user_image))) 
     { 
      echo '<img src="'.$user_image.'" alt="" />'; 
     } 
     else 
     { 
      echo '<img src="/images/users/small.jpg" alt="" />'; 
     } 
     ?> 

ご覧のとおり、存在する場合はファイルをチェックし、存在しない場合はプレースホルダを表示します。

$ _SESSION ['id']変数は存在し、スクリプト内の他の場所で使用されています。

問題は何ですか?

をあなたは

/foo/bar/images/users/*.jpg 

であなたのイメージを持って働いている、前に、あなたのスクリプトが

/foo/bar/script.php 

にあった、realpath(dirname(__FILE__) . $user_image)ので:[OK]を、簡単なそれを置くことができます

+0

定義 "は動作しません"。それが成功すると思うとき条件付きで失敗するか? '$ user_image'の値は期待した値ではありませんか? '__FILE__'はあなたが期待するものではありませんか? – Quentin

+0

さて、問題は何ですか?ファイルは存在しませんか? 'echo realpath(dirname(__ FILE__))を試してください。$ user_image)) 'とそれが存在するかどうかを確認します。 – deceze

+0

ファイルのパスを確認してください。他の場所にコピーした場合は、パスが一致しない可能性が非常に高いです。 –

答えて

5

感謝

を作成します210
/foo/bar/image/users/*.jpg 

ただし、同じレベル(/foo/baz/script.php)上の別のディレクトリにスクリプトを移動し、前のコマンドの出力は

/foo/baz/image/users/*.jpg 

と、このパスになりますは存在しません。

あなたのコメントでは、スクリプトを別のディレクトリに移動しました。イメージを移動しなかった場合、スクリプトは間違いなく失敗します。

また、URL(つまり外部)またはファイルパス(内部から)を介して画像にアクセスすることに違いがあります。 dirname(__FILE__)はあなたに別の値を与えるため、テストを失敗しますを持って、あなたのイメージは常にwww.yourdomain.com/images/usersを経由して利用できるようになりますが、あなたはあなたのPHPスクリプトは、別のディレクトリに移動した場合:

foo/ 
| 
- baz/ 
| | 
| - script.php <-absolut path: /foo/baz/images/users/... 
| 
- bar/ <- entry point of URL is always here 
    | 
    - script.php <- absolut path: /foo/bar/images/users/... 
    - images/  
    | 
    - users/ 
     | 
     - *.jpg 

更新:

スクリプトが画像の下の1つのレベルであれば、修正は次のようになります。

file_exists(realpath(dirname(__FILE__) . '/../' . $_SESSION['id'] . 'a.jpg')) 

これは/foo/images/users/v3/../12a.jpgのようなものを生成します。 ..はレベルを上げることを意味します。

またはいくつかのレベルが上がっていくと$user_imageを使用して:

realpath(dirname(__FILE__) . '/../../..' . $user_image) 
+0

ええ、私は理解しています。私が使用している場合\t \t \tエコー ''; 画像が表示されます。だからそれは文法と関係があります! – sark9012

+0

@ルーク:構文ではありません。あなたのパス構築は壊れています。間違ったパスを指しています。これを修正する必要があります。しかし今までは、あなたはディレクトリ構造を知っている唯一の人物です。例えば。修正は 'dirname(__ FILE__)です。 '../bar'。 $ user_image'。 –

+0

私のスクリプトは現在、画像のある場所から1レベル下にあります。私はディレクトリに画像を持っていて、直接v3と呼ばれています。 v3の中には私が実行しようとしているスクリプトがあります。多分これがこれを解決するのに役立つでしょうか? – sark9012