2009-08-17 31 views
29

Đối với một số lý do mã PHP dưới đây sẽ không hoạt động, tôi không thể tìm ra.File_exists của PHP() sẽ không hoạt động đối với tôi?

Nó là rất lạ, file_exists dường như không thấy rằng hình ảnh không tồn tại, tôi đã kiểm tra để đảm bảo một đường dẫn tập tin tốt đã được đưa vào file_exists chức năng và nó vẫn là hành động lên

Nếu Tôi thay đổi file_exists thành file_exists, nó sẽ trả lại một hình ảnh tồn tại và những hình ảnh không tồn tại

define('SITE_PATH2', 'http://localhost/'); 

$noimg = SITE_PATH2. 'images/userphoto/noimagesmall.jpg'; 
$thumb_name = 'http://localhost/images/userphoto/1/2/2/59874a886a0356abc1_thumb9.jpg'; 
if (file_exists($thumb_name)) { 
    $img_name = $thumb_name; 
}else{ 
    $img_name = $noimg; 
} 
echo $img_name; 
+0

http://www.dreamincode.net/forums/topic/11197-checking-if-file-exists-on-remote-server/ –

Trả lời

68

file_exists() cần sử dụng đường dẫn tệp trên ổ cứng chứ không phải URL. Vì vậy, bạn nên có một cái gì đó giống như hơn:

$thumb_name = $_SERVER['DOCUMENT_ROOT'] . 'images/userphoto/1/2/2/59874a886a0356abc1_thumb9.jpg'; 
if(file_exists($thumb_name)) { 
    some_code 
} 

http://us2.php.net/file_exists

+0

$ _SERVER [ 'CONTEXT_DOCUMENT_ROOT'] sẽ làm việc nếu bí danh của bạn không nằm trong thư mục gốc tài liệu của bạn, trong trường hợp $ _SERVER ['DOCUMENT_ROOT'] sẽ không thành công –

4

file_exists không chỉ làm việc trên các hệ thống tập tin địa phương.

Vì vậy, cố gắng này nếu bạn đang sử dụng localhost:

$thumb_name = 'images/userphoto/1/2/2/59874a886a0356abc1_thumb9.jpg'; 
if (file_exists($_SERVER['DOCUMENT_ROOT'].$thumb_name)) { 
    $img_name = SITE_PATH2.$thumb_name; 
} else { 
    $img_name = $noimg; 
} 
10

docs nói:

Tính đến PHP 5.0.0, chức năng này cũng có thể được sử dụng với một số URL giấy gói. Tham khảo List of Supported Protocols/Wrappers để biết danh sách các trình bao bọc nào hỗ trợ stat() họat động chức năng.

+2

Tôi không tin rằng HTTP/HTTPS nằm trong danh sách các giao thức() được hỗ trợ trên mỗi tài liệu - chỉ một số "goofier" những thứ như php: // memory. – AvatarKava

+1

huh? http://docs.php.net/manual/en/wrappers.http.php – SilentGhost

1

Bạn đã bật tùy chọn cho phép bạn sử dụng URL bên ngoài? Bạn có thể đặt nó trong php.ini:

allow_url_fopen = 1 
0

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

bạn đã kiểm tra các ý kiến ​​dưới đây?

Chỉ đọc các phần của nó, nhưng có vẻ như có một số vấn đề.

Caching có thể là một vấn đề. Khi mở các url FTP, nó luôn trả về giá trị true (chúng có trong các chú thích) ...

0

Bạn phải ghi đường dẫn tệp như "file:///C:/Documents%20and%20Settings/xyz/Desktop/clip_image001.jpg".

0

Hãy thử Dưới đây một. thái hoạt động cho tôi

define('SITE_PATH2', 'http://localhost/'); 
$noimg = SITE_PATH2. 'images/userphoto/noimagesmall.jpg'; 
$thumb_name = 'http://localhost/images/userphoto/1/2/2/59874a886a0356abc1_thumb9.jpg'; 

if ($fileopen = @fopen($thumb_name)) { 
    $img_name = $thumb_name; 
    fclose($fileopen); 
}else{ 
    $img_name = $noimg; 
} 
echo $img_name; 
Các vấn đề liên quan