-1

I tried to check either image exist or not on the remote URL. I tried different methods to check.

checkRemoteUrl('https://example.org/image.jpg');

function checkRemoteUrl($url){
    //Curl
    $ch = curl_init();                          
    curl_setopt($ch, CURLOPT_URL,$url); 
    curl_setopt($ch, CURLOPT_POST, 1 );                     
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $result = curl_exec($ch);   
    var_dump($result);
    //File Exist
    $result = file_exists($url);
    var_dump($result);

    //Fopen
    $result = fopen($url, 'r'); 
    var_dump($result);

    //File Get Content
    $result = file_get_contents($url);
    var_dump($result);

    //Get image Size
    $result = getimagesize($url);
    var_dump($result);

    //Get Header
    $result = get_headers($url);
    var_dump($result);
}

The response of the following function

bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)

If I hit the image URL on the browser it shows the image, but unable to get any response from any of the methods. All the methods are working fine on a different server with the same URL. allow_url_fopen and allow_url_include are enabled on the server. What could be the issue?

mkrieger1
  • 19,194
  • 5
  • 54
  • 65
Bhagchandani
  • 548
  • 6
  • 21
  • 1
    Does this answer your question? [Check whether image exists on remote URL](https://stackoverflow.com/questions/1363925/check-whether-image-exists-on-remote-url) – Vicky Mar 25 '21 at 07:08
  • it also returns the same response. Also, update the question with the suggestion. – Bhagchandani Mar 25 '21 at 07:14
  • If the duplicate does not help, please share more details, like the **exact** code triggering your problem – Nico Haase Mar 25 '21 at 07:32
  • 2
    _“No route to host”_ pretty clearly hints at a network level problem. If no route can be established from your server to the target machine, then it doesn’t matter which exact way you try; file_exists, fopen, get_headers, file_get_contents, getimagesize – they all can’t magically overcome this lower-level issue. Try a tracert to the target host from your server, or let your server admin look into the issue. – CBroe Mar 25 '21 at 07:38
  • @NicoHaase, I have a simple PHP function which checks the image exists or not. – Bhagchandani Mar 25 '21 at 07:46
  • @CBroe, Thanks. But they need some starting point to look into the issue. – Bhagchandani Mar 25 '21 at 07:47
  • Please share that "simple PHP function" with all details such that others could reproduce the problem. "No route to host" does not look like a PHP problem, as CBroe already wrote – Nico Haase Mar 25 '21 at 07:49
  • Please share more details. `https://example.org/image.jpg` throws a 404 for me, and it does not display any image – Nico Haase Mar 25 '21 at 09:27
  • This URL is an example URL, The actual URL works fine when we see it on the browser. – Bhagchandani Mar 25 '21 at 09:29

2 Answers2

-1

you can check with the curl

$ch = curl_init("http://www.fooo.com/image.jpg");

curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$response_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);

$response_status >= 404 -> not found,
$response_status = 200 -> file is exists


All http status code

# 1xx: Information
Code | Message | Description
--- | --- | ---
100 | Continue | The server has received the request headers, and the client should proceed to send the request body
101 | Switching Protocols    | The requester has asked the server to switch protocols
103 | Checkpoint | Used in the resumable requests proposal to resume aborted PUT or POST requests

# 2xx: Successful
Code | Message | Description
--- | --- | ---
200 | OK | The request is OK (this is the standard response for successful HTTP requests)
201 | Created   | The request has been fulfilled, and a new resource is created
202 | Accepted | The request has been accepted for processing, but the processing has not been completed
203 | Non-Authoritative Information | The request has been successfully processed, but is returning information that may be from another source
204 | No Content | The request has been successfully processed, but is not returning any content
205 | Reset Content | The request has been successfully processed, but is not returning any content, and requires that the requester reset the document view
206 | Partial Content | The server is delivering only part of the resource due to a range header sent by the client

# 3xx: Redirection
Code | Message | Description
--- | --- | ---
300 | Multiple Choices | A link list. The user can select a link and go to that location. Maximum five addresses  
301 | Moved Permanently  | The requested page has moved to a new URL 
302 | Found | The requested page has moved temporarily to a new URL 
303 | See Other  | The requested page can be found under a different URL
304 | Not Modified | Indicates the requested page has not been modified since last requested
306 | Switch Proxy | No longer used
307 | Temporary Redirect | The requested page has moved temporarily to a new URL
308 | Resume Incomplete | Used in the resumable requests proposal to resume aborted PUT or POST requests

# 4xx: Client Error
Code | Message | Description
--- | --- | ---
400 | Bad Request | The request cannot be fulfilled due to bad syntax
401 | Unauthorized | The request was a legal request, but the server is refusing to respond to it. For use when authentication is possible but has failed or not yet been provided
402 | Payment Required | Reserved for future use
403 | Forbidden | The request was a legal request, but the server is refusing to respond to it
404 | Not Found | The requested page could not be found but may be available again in the future
405 | Method Not Allowed | A request was made of a page using a request method not supported by that page
406 | Not Acceptable | The server can only generate a response that is not accepted by the client
407 | Proxy Authentication Required | The client must first authenticate itself with the proxy
408 | Request Timeout | The server timed out waiting for the request
409 | Conflict | The request could not be completed because of a conflict in the request
410 | Gone | The requested page is no longer available
411 | Length Required | The "Content-Length" is not defined. The server will not accept the request without it 
412 | Precondition Failed | The precondition given in the request evaluated to false by the server
413 | Request Entity Too Large | The server will not accept the request, because the request entity is too large
414 | Request-URI Too Long | The server will not accept the request, because the URL is too long. Occurs when you convert a POST request to a GET request with a long query information 
415 | Unsupported Media Type | The server will not accept the request, because the media type is not supported 
416 | Requested Range Not Satisfiable | The client has asked for a portion of the file, but the server cannot supply that portion
417 | Expectation Failed | The server cannot meet the requirements of the Expect request-header field

# 5xx: Server Error
Code | Message | Description
--- | --- | ---
500 | Internal Server Error | A generic error message, given when no more specific message is suitable
501 | Not Implemented | The server either does not recognize the request method, or it lacks the ability to fulfill the request
502 | Bad Gateway | The server was acting as a gateway or proxy and received an invalid response from the upstream server
503 | Service Unavailable | The server is currently unavailable (overloaded or down)
504 | Gateway Timeout | The server was acting as a gateway or proxy and did not receive a timely response from the upstream server
505 | HTTP Version Not Supported | The server does not support the HTTP protocol version used in the request
511 | Network Authentication Required | The client needs to authenticate to gain network access

dılo sürücü
  • 3,821
  • 1
  • 26
  • 28
-1
<?php

$ch = curl_init("https://cdn.sstatic.net/Img/unified/sprites.svg");
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$response_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($response_status == 200) {
    // file exists
} else {
    // file doesn't exist
}
?>
NateEag
  • 575
  • 6
  • 13