0

symfony 2 の /uploads フォルダーにファイルが存在するかどうかを確認しようとしています。

    $file = $this->getAssetUrl('/uploads/hd/'.$gift->getImage());
     if(file_exists($file)) return $this->getAssetUrl('/uploads/hd/'.$gift->getImage());
     else return $this->getAssetUrl('/uploads/large/'.$gift->getImage());

これは常にfalseを返します。すべての文字列をデバッグし、パスが正しいことを確認し、ファイルが存在することを手動で確認しました。何か案は?

4

2 に答える 2

4

getAssetUrl実際の場所ではなく、印刷しているリソースのURIのみを印刷します。

プロジェクトを/var/ www / myProjectに配置した場合、パスfile_existsは/ var / www / myProject / web / uploads / hd /を期待しますが、/ uploads/hdのみを取得します。ルートディレクトリで「uploads」というフォルダを探します。最初のスラッシュ( "/")は、PHPの場合は「システムルートディレクトリ」を意味し、ブラウザの場合は「ルートURI」を意味します。

if (file_exists($this->get('request')->getBasePath() . "/uploads/hd/" . $gift->getImage()))私はそのトリックを行うべきだと信じています。

于 2013-01-17T11:37:10.993 に答える
0

getAssetUrl有効なファイル名を返していません。代わりに URL が表示されます。

file_existsパス (相対または絶対) を指定する必要があるため、次のようなものを使用する必要があります。

$file = dirname(__FILE__).DIRECTORY_SEPARATOR.'..'
              .DIRECTORY_SEPARATOR.'..'
              .DIRECTORY_SEPARATOR.'uploads'
              .DIRECTORY_SEPARATOR.'hd'
              .DIRECTORY_SEPARATOR.$gift->getImage();

もちろん、必要に応じてパスを調整してください。

于 2013-01-17T11:46:55.647 に答える