2010-08-29 42 views

回答

5

找到這方面的文檔和示例源代碼,你是否嘗試過is_writable()函數?

文檔 http://www.php.net/manual/en/function.is-writable.php

實施例:

$filename = 'test.txt'; 
if (is_writable($filename)) { 
    echo 'The file is writable'; 
} else { 
    echo 'The file is not writable'; 
}
3

的is_writable功能是好東西。但是,OP詢問了如何在腳本所在的目錄中創建一個文件。從弗拉德b明目張膽地偷,這樣做:

$filename = __DIR__ . '/test.txt'; 
if (is_writable($filename)) { 
    echo 'The file is writable'; 
} else { 
    echo 'The file is not writable'; 
} 

predefined constants PHP手冊中關於__DIR__細節。沒有它,你將在當前的工作目錄中創建一個文件,這可能或多或少是你的目的而定義的。

+3

好如果test.txt不存在,這不起作用。 – IARI 2014-12-12 15:04:05

5

不幸的是,到目前爲止所有的答案都是錯誤的或不完整的。

is_writable

返回TRUE,如果文件名存在並且是可寫

這意味着:

is_writable(__DIR__.'/file.txt'); 

將返回false即使腳本有寫對目錄的權限,這是因爲file.t xt尚不存在。

假設該文件不存在,正確的答案很簡單:

is_writable(__DIR__); 

這裏有一個真實的例子,包含工程文件是否已經存在的邏輯:

function isFileWritable($path) 
{ 
    $writable_file = (file_exists($path) && is_writable($path)); 
    $writable_directory = (!file_exists($path) && is_writable(dirname($path))); 

    if ($writable_file || $writable_directory) { 
     return true; 
    } 
    return false; 
}