2017-06-05 12 views
1

ウェブルート内に新しいディレクトリ(フォルダ)を作成して、その新しいフォルダ内にファイルを作成/編集できるようにしたい。cakephp - ウェブルート内に新しいディレクトリを作成する

私のコードは次のとおりです。

$path = 'files' . DS . 'pathtofolder';// $folder_name; 
$folder = new Folder($path); 
if (!is_null($folder->path)) { //this is to verify if created 
    echo "Exists"; 
} 
else{ 
    echo "Doesnt exist"; 
} 

結果は常にdoesntの存在です。そして、私はcakephpフォルダ内に作成されたフォルダを見つけることができません。

「webroot」の「ファイル」を変更しようとしましたが、うまく動作しませんでした。

これはディレクトリを作成する正しいコードですか?

答えて

1

これは777の許可を得てフォルダを作成します、あなたはあなたの要件ごとにフォルダのアクセス許可を設定することができ、この

$path = 'files' . DS . 'pathtofolder'; 
$folder = new Folder($path, true, 0755); 
if ($folder->path) { 
    echo "Exists"; 
} 
else{ 
    echo "Doesnt exist"; 
} 
+0

'$ create'パラメータについての小さな説明は害を与えません。 ** https://book.cakephp.org/3.0/en/core-libraries/file-folder.html#folder-api** | ** https://api.cakephp.org/3.4/class-Cake.Filesystem.Folder.html#___construct**。 – ndm

1

ディレクトリを作成するためのPHPの直接呼び出しがあります。だから、あなたはそれを使うことができます。私はcakephpのバージョンを知らない。

if (!mkdir($structure, 0777, true)) { 
    die('Failed to create folders...'); 
} 

また、Webサーバーのユーザーwww-dataにディレクトリを作成する権限があるかどうかを確認してください。それ以外の場合、コマンドプロンプトでこのコマンドを実行します。

addgroup www-data 

これにより、アクセス権を有効にするためのwww-dataが追加されます。権限拒否エラーが発生した場合は、上記のコマンドにsudoを追加する必要があるかもしれません。

0
$path = WWW_ROOT . 'webroot' . DS . 'FolderNameYouWantToSet' . DS; 
       if (!file_exists($path)) { 
        $oldMask = umask(0); 
        mkdir($path, 0777, true); 
        chmod($path, 0777); 
        umask($oldMask); 
       } 

を試してみてください。

WWW_ROOTは、プロジェクトまでのパスを格納するグローバルなケーキ変数です。

+1

パーミッションのために777ではなく755を使うほうが良いでしょう。後者はあまりにも自由です。 – drmonkeyninja

関連する問題