content 在php中還不存在的文件夾內創建一個文件



php file write (4)

使用mkdir()創建任何缺失的文件夾,然後使用touch()創建空文件。

在兩種情況下都可以使用絕對路徑,這意味著:

mkdir('data');
mkdir('data/newfolder');
mkdir('data/newfolder/10302008');
touch('data/newfolder/10302008/log_for_Today.txt');

如果你對它的起點好奇,你可以使用getcwd()來告訴你工作目錄。

https://ffff65535.com

我想我的PHP腳本基於日期創建一個文件夾中的輸出文件。 我這樣做的方式是,它應該從其他程序輸出的文本文件中獲取文件夾名稱/文件名,這是我無法編輯的。

所以抓取數據的文件如下所示:

data/newfolder/10302008/log_for_Today.txt | 24234234

只有多行,我只需要腳本逐行瀏覽,獲取文件夾/文件名,並在該位置創建一個名稱為空的文件。

目錄都是777.現在我知道如何在一個文件夾中創建一個新的空exe文件,但似乎無法弄清楚如何創建該文件夾,然後在其中的exe文件,任何想法?


$directories = explode( '/', $path );

您可以拆分路徑以獲取單個目錄名稱。 然後通過數組並創建目錄設置chmod 777.(執行php的系統用戶必須有這個能力。)

$file = array_pop( $directories );
$base = '/my/base/dir';

foreach( $directories as $dir )
{

   $path = sprintf( '%s/%s', $base, $dir )
   mkdir( $path ); 
   chmod( $path, 777 );
   $base = $path;

}

// file_put_contents or something similar
file_put_contents( sprintf( '%s/%s', $base, $file ), $data );

這裡的問題是,你可能不會從你的PHP腳本設置chmod。

另一種方法是使用FTP。 用戶將FTP登錄數據傳遞給腳本,並使用FTP功能來管理文件。

http://www.php.net/FTP


if(!file_exists(dirname($file)))
    mkdir(dirname($file), 0777, true);
//do stuff with $file.

使用第三個參數mkdir() ,這使得它遞歸地創建目錄。


這太遲了,但我發現這個問題,我有一個解決方案,這是一個示例代碼,它適用於我,不管你的文件有多深。 如果您在Windows服務器上運行,則應更改第1行和第3行的目錄分隔符。

$pathToFile = 'test1/test2/test3/test4/test.txt';
$fileName = basename($pathToFile);
$folders = explode('/', str_replace('/' . $fileName, '', $pathToFile));

$currentFolder = '';
foreach ($folders as $folder) {
    $currentFolder .= $folder . DIRECTORY_SEPARATOR;
    if (!file_exists($currentFolder)) {
        mkdir($currentFolder, 0755);
    }
}
file_put_contents($pathToFile, 'test');

最好的問候,Georgi!





folder