2011-02-03 3 views
0
$var = "http://site.com/image.png"; 

if (file_exists($var)) 
    echo 'yes'; 
else 
    echo 'no'; 

왜이 스크립트는 항상 false을 반환합니까?file_exists 항상 false

+1

컴퓨터 (또는 웹 서버)의 실제 경로가 아닌 URL을보고 있으므로 – Phill

답변

10

실제로는 이 아니기 때문에은 실제로 파일이며 URL이 아닙니다.

PHP5까지는 file_exists 함수가 파일 또는 디렉토리의 존재 여부를 감지하기위한 것입니다. PHP5에서

은 지원 this page에 메모에 따라, 일부 URL 래퍼에 대한 지원을 할 수 있도록 도입 :

팁 : PHP 5.0.0로,이 기능을 일부 사용할 수 있습니다를 URL 래퍼. stat() 패밀리 기능을 지원하는 래퍼를 결정하려면 지원되는 프로토콜 및 래퍼를 참조하십시오.

래퍼는, 불행하게도, the http one does not support stat, file_exists이 작동 할 수 있도록하는 전제 조건 here 자세한하지만.

서버에서 실행중인 경우 $_SERVER['DOCUMENT_ROOT']을 사용하여 변환하거나 파일 시스템에서 다른 방법을 찾을 수 있습니다.

0

변수는 시스템이 아닌 URL을 나타내는 경로 여야합니다. 예를 들어

$var = "/var/www/html/image.png"; 
0

대부분의 경우 서버가 PHP 내부에서 외부 연결을 허용하지 않을 수 있습니다.

로컬 파일을 열고 해당 파일이 작동하는지 확인할 수 있습니다. 그렇다면 코드가 정확합니다.

allow_url_fopen이 켜짐으로 설정되어 있는지 확인하십시오. 원격 파일의 존재를 확인하려는 경우

+0

신경 쓰지 마라. 나는 결론에 도달했다. @ paxdiablo가 정답을 가지고 있습니다. – berkes

1

은 (실제로는 "자원")를 사용

$i = get_headers($url); 
$ok = strpos($i[0], "200"); 

그리고 HTTP 상태 코드를 확인합니다.

관련 문제