Php henüz var olmayan bir klasörün içinde bir dosya oluşturma

4 Cevap php

Benim php script tarihe dayalı bir klasörde bir çıktı dosyası oluşturmak istiyorum. Ben bunu yapıyorum yolu onun ben düzenlemek için alamıyorum başka bir program tarafından çıkarılan bir metin dosyasından foldername / dosya almak gerekiyordu olmasıdır.

Yani dosya, bu gibi görünüyor gelen verileri kapma:

data/newfolder/10302008/log_for_Today.txt | 24234234

Sadece çoklu hatları ile, ben sadece senaryo, satır satır onu geçmesi klasör / dosya adı kapmak ve bu konumda bu adla boş bir dosya oluşturmanız gerekir.

Dizinleri 777 vardır. Şimdi bir klasörde yeni bir boş exe dosyası oluşturmak için nasıl biliyorum ama bunun içinde ilk önce exe klasörü oluşturmak için nasıl anlamaya görünüyor olamaz, herhangi bir fikir?

4 Cevap

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

Bu dosyaları ve dizinleri oluşturmak kılan, mkdir() için üçüncü parametreyi kullanın.

Mkdir () kullanarak herhangi bir eksik klasörleri oluşturun, sonra dokunma kullanarak boş bir dosya oluşturun ().

Sen anlam, her iki durumda da mutlak yolları kullanabilirsiniz:

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

Eğer başlangıç ​​noktası o olacak nerede merak ediyorsanız, size çalışma dizini size () getcwd kullanabilirsiniz.

Ile

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

Eğer tek bir dizin adlarını almak için yolunu ayırabilirsiniz. Ardından dizi geçmesi ve chmod 777 ayarı dizinleri oluşturun. (Php yürütür sistemi kullanıcı, bunu yapmak için yetenek olması gerekir.)

$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 );

Burada sorun sizin php komut chmod ayarlanmış olmayabilir olmasıdır.

Alternatif bir FTP kullanmak olabilir. Kullanıcı komut FTP giriş veri geçer ve dosyaları yönetmek için FTP işlevselliği kullanır.

http://www.php.net/FTP

Eğer sadece mkdir dir (http://nl.php.net/manual/en/function.mkdir.php) ardından İşlevin ile 777 (http://nl.php.net/manual/en/function.chmod.php) değişiklik dizin var chmod (http://nl.php.net/manual/en/function.chdir.php) ve oluşturarak bunu yapamaz ardından dosyayı (dokunmatik) oluşturabilir?