file_put_contents no devuelve un valor

Tengo problemas para usar file_put_contents. Pensé que podría hacer algo como esto en laravel / php.

$response = new stdClass(); $key = generateKey(); // generates a 32 bit key $dir = "/mnt/my-usb"; if (file_put_contents($dir . "/" . "key", $key) === true) { $response->status = "Fail"; $response->message = "Some user facing message that describes the error"; return Response::json($response, 500); } 

Así que pensé que podría verificar el código de estado file_put_contents y devolver un buen mensaje de error. Sin embargo, cuando paso por este código, una vez que llega a la statement if, si hay una falla, nunca ingresa la instrucción if. No estoy seguro por qué. Lo he intentado sin el === verdadero y obtengo los mismos resultados. Pensé que file_put_contents devolvería algún tipo de código de error que podría buscar y crear un mensaje de usuario, pero simplemente se devuelve automáticamente y no puedo crear una respuesta para enviar de vuelta al cliente. ¿Alguna idea? Gracias por adelantado.

Consulte el manual: http://php.net/function.file-put-contents

Esta función devuelve la cantidad de bytes que se escribieron en el archivo o FALSE en caso de error.

Significado: file_put_contents nunca devolverá TRUE . Sin embargo, devolverá false , así que si insiste en usar un valor booleano, entonces deberá usar:

 if (file_put_contents($dir . "/" . "key", $key) !== false) { // reset of code } 

Además, hay varios ejemplos sobre cómo hacer que file_put_contents “muera silenciosamente” (es decir, probando que el archivo se puede abrir si existe, verificando que la carpeta sea escribible, etc.)

Intente agregar una ruta completa a su ruta de archivo, como esta:

 /home/Site_Name/public_html/