Mkdir PHP başarısız olduğunda bir nedenini bulmak için nasıl?

3 Cevap php

PHP'nin mkdir fonksiyonu sadece doğru ve yanlış döndürür. Yanlış döndürür zaman sorundur.

Ben etkin hata raporlama ile koşuyorum, ben ekranda hata mesajı görebilirsiniz. Ben de Apache günlüğüne hata iletisi görebilirsiniz. Ama (örn. IM yoluyla kendime göndermek) mesajın metnini kapmak ve onunla başka bir şey yapmak istiyorum. Nasıl hata metni alabilirim?

Update: Eymen'in fikrini ardından, bu geldi:

function error_handler($errno, $errstr) {
    global $last_error;
    $last_error = $errstr;
}

set_error_handler('error_handler');
if (!mkdir('/somedir'))
    echo "MKDIR failed, reason: $last_error\n";
restore_error_handler();

Küresel değişkeni kullanır Ancak, ben bunu sevmiyorum. Temiz bir çözüm için herhangi bir fikir?

3 Cevap

İstisnaları kullanabilirsiniz:

Kurulum böylece gibi bazı kod:

function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");

Ve sonra sadece yapın:

try {
   mkdir('/somedir');
} catch(ErrorException $ex) {
   echo "Error: " . $ex->getMessage();
}

İstediğin ne yapmalıyım.

Eğer php hata işleyicisi korumak istiyorsanız, o try catch bloğundan sonra, sadece arama:

restore_error_handler()

Ben aşağıdaki gibi bir şey kullanabilirsiniz:

if(! @mkdir('$fileLocation', 0777, $recursive = true)){
    $mkdirErrorArray = error_get_last();
    throw new Exception('cant create directory ' .$mkdirErrorArray['message'], 1);
}