2017-01-21 3 views
0

그렇듯이 간단하기 때문에이 코드를 작동시키지 못합니다. 사용자 아바타 이미지가 있는지 여부를 확인하려고 시도하고 있는데 그렇지 않은 경우 기본 아바타 이미지를 사용합니다. 이제 이미지가 존재하고 파일 이름, 경로, 철자, 형식 등이 정확하더라도 file_exists()은 항상 파일이 존재하지 않는다고 주장하는 false을 반환합니다.PHP - file_exists가 이미지에 대해 작동하지 않는 경우

<?php 
    $avatar = 'http://'.$_SERVER['SERVER_NAME'].'/ihg/dist/img/user'.$_SESSION['ID'].'-128x128.jpg'; 
    $default = 'http://'.$_SERVER['SERVER_NAME']."/ihg/dist/img/user_default.jpg"; 

    if (!file_exists($avatar)) { 
     echo "<img src=\"$default\" class=\"user-image\" alt=\"User Image\">"; 
    } else { 
     echo "<img src=\"$avatar\" class=\"user-image\" alt=\"User Image\">"; 
    } 
    ?> 

이것은 서버 측 문제입니까, 아니면 코드에 결함이 있습니까?

EDIT : $ _SERVER [ 'DOCUMENT_ROOT'] 변수와 절대 경로를 사용했지만 결과가 없습니다.

+0

왜 기본 서버 변수 후 큰 따옴표 대신 싱글을 사용합니까 ? 어쨌든, 폴더 권한 문제 일 수 있습니까? –

답변

2

file_exists()은 URL이 아닌 파일 경로를 허용합니다.

URL을 기반으로 이미지가 존재하는지 확인하려면 대신 응답 유형을 확인해야합니다.

로컬 리소스이므로 URL을 사용하지 않고 전체 서버 파일 경로로 전환하기 만하면됩니다. ($avatar = '/path/to/root/...)

http://php.net/manual/en/function.file-exists.php

+0

이 솔루션의 문제점은 이미지가 내 서버의 다른 위치에있는 내비게이션 막대의 일부이므로 동적 '$ _SERVER ['DOCUMENT_ROOT ']'경로가 있어야 동일한 폴더를 항상 해결할 수 있다는 것입니다. 문제는 document_root가 작동하지 않는 것 같습니다 ... – Armitage2k

+1

'$ _SERVER [ 'DOCUMENT_ROOT']'출력을 시도해보고 예상 경로를 얻고 있는지/경로를 적절히 계산했는지 확인 했습니까? –

+0

그냥 문제를 발견했다 :) 나는'$ _SERVER [ 'DODUCMENT_ROOT']'다음에'/'를 놓쳤다. 이제는 문제가 없다. 감사! – Armitage2k

관련 문제