26

php スクリプトで、日付に基づいてフォルダーに出力ファイルを作成する必要があります。私がこれを行っている方法は、編集できない別のプログラムによって出力されたテキストファイルからフォルダー名/ファイル名を取得することになっています。

したがって、データを取得するファイルは次のようになります。

data/newfolder/10302008/log_for_Today.txt | 24234234

複数行の場合のみ、スクリプトを 1 行ずつ実行し、フォルダー/ファイル名を取得し、その場所にその名前の空のファイルを作成する必要があります。

ディレクトリはすべて777です。これで、フォルダーに新しい空のexeファイルを作成する方法がわかりましたが、最初にフォルダーを作成してからその中にexeを作成する方法がわかりません。アイデアはありますか?

4

5 に答える 5

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

mkdir()の 3 番目のパラメーターを使用すると、ディレクトリが再帰的に作成されます。

于 2008-11-11T21:07:05.140 に答える
4

$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

于 2008-11-11T21:06:14.923 に答える
2

少し遅すぎますが、この質問を見つけました。これに対する解決策があります。ここにコード例を示します。ファイルの深さに関係なく、うまく機能します。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');

敬具、ジョージ!

于 2015-05-19T22:39:39.933 に答える
1

mkdir() を使用して不足しているフォルダーを作成し、touch() を使用して空のファイルを作成します。

どちらの場合も絶対パスを使用できます。つまり、次のことを意味します。

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

開始点がどこになるのか知りたい場合は、 getcwd() を使用して作業ディレクトリを確認できます。

于 2008-11-11T21:00:48.787 に答える
0

mkdir ( http://nl.php.net/manual/en/function.mkdir.php ) で dir を作成してから chmod 777 ( http://nl.php.net/manual /en/function.chmod.php ) chdir ( http://nl.php.net/manual/en/function.chdir.php ) でディレクトリを変更し、ファイルを作成します (タッチ)?

于 2008-11-11T20:55:24.040 に答える