2012-02-27 2 views
0

Можно создать дубликат:
How can one check to see if a remote file exists using PHP?
Check if file exists on remote machinefile_exists в PHP

У меня возникли проблемы с этим кодом. Я пытаюсь найти файл в $url ниже, и файл существует, но вместо этого код возвращает No files located here. У меня либо неправильный синтаксис, либо я не могу искать файл таким образом.

Пожалуйста, помогите. Заранее спасибо.

<?php 

function formaction() 
{ 

$url = "http://".$_SERVER['HTTP_HOST'] . "/" . basename(dirname (dirname (dirname (dirname 
(__FILE__))))) . "/process.php"; 

$path = false; 

     if (@file_exists($url)) 
     { 
     $path = $url; 
     } 

else 
     { 
      echo "No file located here"; 
     } 


return $path; 

} 

echo formaction(); 


?> 
+11

'file_exists()' не работает на URL-адресах –

+1

Возможно, это будет полезно: http://www.php.net/manual/en/function.file-exists.php#85246 – Travesty3

+0

HI Pekka, есть способ правильно вызвать файл, а затем преобразовать этот путь в URL-адрес, как указано выше? Любое руководство действительно поможет. Мне нужно только преобразовать это в URL-адрес, потому что другой способ не будет отображаться правильно, когда я вставляю его в форму action = "". Например, браузер запутывается, когда я так называю это ...../home2/fortehome/richmindonline/testenvironment ... –

ответ

1

С file_exists() don't работа с url's:

Вы можете использовать get_headers(), чтобы проверить его 404 или не идти перейти непосредственно к этому сниппета:

Взято из PHP Руководство: http://www.php.net/manual/en/function.file-exists.php#85246

function url_exists($url) { 
    // Version 4.x supported 
    $handle = curl_init($url); 
    if (false === $handle) 
    { 
     return false; 
    } 
    curl_setopt($handle, CURLOPT_HEADER, false); 
    curl_setopt($handle, CURLOPT_FAILONERROR, true); // this works 
    curl_setopt($handle, CURLOPT_HTTPHEADER, Array("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15")); // request as if Firefox  
    curl_setopt($handle, CURLOPT_NOBODY, true); 
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, false); 
    $connectable = curl_exec($handle); 
    curl_close($handle); 
    return $connectable; 
} 

но в этом случае, это seens, что вы не использовать для поиска из URL .. но, глядя на локальный сценарий. Вы не должны использовать URL, а фактический абсолютный или относительный путь.

Проверил:

echo getcwd() . "\n"; 

Кроме того, проверьте (имя-каталога), Там вы можете быть в состоянии определить относительный/абсолютный путь этот путь.

+0

Я очень беспокоюсь по поводу этого кода, потому что только одна строка документируется как '// this works'. Как узнать, как работают другие линии? –

Смежные вопросы