2

そのため、php で人気のある mkdir() 関数は、次のコードで警告をスローします。

public function check_dir($dir, $create_dir = false) {
    if (is_dir ( $dir )) {
        return true;
    } elseif ($create_dir == true) {
        return mkdir ( $dir );
    }

    return false;
}

何が起こっているのかを知るのは簡単です。だから説明しません。しかし、 mkdir() 行で次のようになります。

警告: mkdir(): 70 行目の /var/www/wordpress/wp-content/themes/Aisis-Framework/AisisCore/FileHandling/File.php で許可が拒否されました

したがって、それは警告であり、それ以上のものではありませんが、ライブで警告を無効にしたり、その事実に対するエラーを無効にしたりしないでください。では、警告や致命的ではなく、trueまたはfalseを返すと明確に述べられている場合、どうすればこれに対処できますか?

4

2 に答える 2

0

カスタム エラー ハンドラを確立できます。これは、一般的には良い方法です: http://www.php.net/set-error-handler

これを使用して、任意の適切な方法で PHP エラーを処理できます。それ以外では、エラー/警告ログをオフにするか (おっしゃる通り、良い習慣ではありません)、@ 抑制を使用する必要があります (一般的には避けるべきですが、この場合は適切かもしれません)。

個人的には、失敗を示すために true/false を返す関数は、失敗した場合に警告を発行する必要がないことに同意します。しかし、それはあなたのためのPHPです。

于 2013-03-18T17:47:19.190 に答える
0

本番サーバーでは警告をオフにする必要があります...しかし、さらに良い..コードで許可を確認できます...

function checkDir($dir, $createDir = false) {
    if ($createDir === true) {
        if (is_dir($dir))
            return true;
        $baseDir = dirname($dir);
        if (! is_dir($baseDir) || ! is_writable($baseDir)) {
            return false;
        }
        return mkdir($dir);
    } else {
        return is_dir($dir);
    }
    return false;
}
于 2013-03-18T18:08:59.763 に答える