我在使用file_put_contents时遇到问题。我以为我可以在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);
}
所以我想我可以检查状态代码file_put_contents并返回一条好的错误消息。但是,当我单步执行此代码时,一旦它到达if语句,如果出现故障,它永远不会进入if语句。我不知道为什么。我已经尝试过没有=== true,我得到了相同的结果。我认为file_put_contents会返回某种错误代码,我可以查找并创建面向用户的消息,但它只是自动返回,我无法创建响应以发送回客户端。有什么想法吗?提前致谢。
答案 0 :(得分:9)
查看手册:http://php.net/function.file-put-contents
此函数返回写入文件的字节数,如果失败则返回FALSE。
含义: file_put_contents
永远不会返回TRUE
。它会返回false
,所以如果你坚持使用布尔值,那么你需要使用:
if (file_put_contents($dir . "/" . "key", $key) !== false) {
// reset of code
}
此外,还有多个关于如何使file_put_contents
“无声地死”的例子(即测试文件是否可以打开,如果它存在,检查文件夹是否可写等)。
答案 1 :(得分:0)
尝试添加文件路径的完整路径,如下所示:
/home/Site_Name/public_html/