PHPはマルチレベルのディレクトリを作成し、権限の拒否などのエラーを報告するため、マルチレベルのディレクトリを作成するための一般的な関数を作成しました。

まず、phpはディレクトリ関数mkdir($ dir、$ mod、$ recursive)を作成します。この関数は、マルチレベルディレクトリを再帰的に作成することもできます。3番目のパラメータ$ recursiveでtrueを渡すだけです。そして、$ modパラメータは新しく定義します。作成済みディレクトリのアクセス許可値(8進数)。

ただし、$ modを設定した後に実際に作成されたディレクトリは予想どおりではありません。最終的なディレクトリのアクセス許可値= $ mod-umask;このumaskは通常022であるため、作成時にエラーが発生する場合があります。マルチレベルディレクトリ。umaskを差し引いた後のパーミッション値では不十分な場合があります。したがって、ディレクトリを作成するときにumask値を一時的に0に設定するだけで済みます(ただし、公式Webサイトではumaskの変更は複数のスレッドで使用することはお勧めしません。同じumaskですが、通常使用するnginx + php-fpmまたはApache + phpはシングルスレッドモードとマルチプロセスモードであるため、このような問題は発生しません)

最終パッケージ番号の機能は次のとおりです。

 //$dir: 要创建的目录
 //$mod: 新创建目录的权限,要传入8进制数字(八进制数字都是以0开头的数字)
 //返回值: 返回true表示创建成功,false表示创建失败
   function createDir($dir, $mod = 0777)
   {
        $old = umask(0);
        if (is_dir($dir)) {
            return true;
        }
        try {
            return mkdir($dir, $mod, true);
        } catch (\Exception $e) {
            //$e->getMessage()错误信息,此处可以按照自己需要编写记录错误信息日志
            return false;
        } finally {
            umask($old);
        }
    }

おすすめ

転載: blog.csdn.net/weixin_37281289/article/details/103922754