%60%3A%20PHP%20%E3%81%A7%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E6%A8%A9%E9%99%90%E3%81%8C%E6%8B%92%E5%90%A6%E3%81%95%E3%82%8C%E3%81%BE%E3%81%97%E3%81%9F.png)
次の PHP スクリプトがあります:
$dir = FCPATH . 'uploads' . DIRECTORY_SEPARATOR . 'posts'; // is in CodeIngiter
if (!is_dir($dir)) {
mkdir($dir, 755);
}
これにより、投稿の画像を保存するためのフォルダーが作成されます。ただし、次のエラー/警告が表示されます:
Severity: Warning
Message: mkdir(): Permission denied
フォルダを作成できません。
これを修正するにはどうすればいいでしょうか? フォルダ構造は次のようになります:
/opt/lampp/htdocs/www/my-site/public/ (uploads/posts) // all folders inside files will generate in php
さらに詳しい情報: このコードにコメントを付けて、手動でposts
フォルダーを作成し、ファイルをアップロードしようとすると、宛先パスが書き込み可能ではないというエラーが表示されます。
出力ls -l /opt/lampp/htdocs/www/my-site/
:
drwxrwxr-x 15 lykos lykos 4096 Sep 17 23:08 application
drwxrwxrwx 6 lykos lykos 4096 Sep 29 22:00 public
drwxrwxr-x 8 lykos lykos 4096 Sep 7 12:31 system
出力ls -l /opt/lampp/htdocs/www/my-site/public
:
drwxr-xr-x 4 lykos lykos 4096 Sep 18 21:48 css
drwxr-xr-x 2 lykos lykos 4096 Sep 27 19:18 img
-rwxrwxr-x 1 lykos lykos 9872 Sep 17 23:04 index.php
drwxr-xr-x 8 lykos lykos 4096 Sep 27 20:06 js
drwxr-xr-x 2 lykos lykos 4096 Sep 29 20:34 uploads
答え1
問題はmkdir()
Ubuntu ではなく、あなたの呼び出しにあります。
に従ってあなたのコメントはls -l /opt/lampp/htdocs/www/my-site/public/uploads
存在しないので、パラメータmkdir()
を渡して呼び出す必要がありますrecursive
。
$dir = '/uploads/posts';
if (!is_dir($dir)) {
mkdir($dir, 755, true);
}