2012-02-27 80 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 – 2012-02-27 19:35:02

+1

也許這將有所幫助:http://www.php.net/manual/en/function.file-exists.php#85246 – Travesty3 2012-02-27 19:36:09

+0

HI Pekka,在那裏一種以正確的方式調用文件的方法,然後將該路徑轉換爲上面的URL?任何指導都會有幫助。我只需要將其轉換爲URL,因爲當我將其插入到form action =「」中時,其他方式將無法正確呈現。例如,當我這樣稱呼瀏覽器時會感到困惑............/home2/fortehome/richmindonline/testenvironment ... – 2012-02-27 19:36:57

回答

1

由於file_exists()與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; 
} 

但在這種情況下,作用似乎你不使用從一個URL看起來..但是,尋找本地腳本。你不應該使用URL的,而是實際的絕對或相對路徑。

檢查:

echo getcwd() . "\n"; 

此外,檢查目錄名(),you'll能夠確定相對/絕對路徑這種方式。

+0

我非常關注這段代碼,因爲只有一行被記錄爲//這個工作。我如何知道其他線路的工作? – 2012-02-27 20:32:42