file_put_contents不返回值

时间:2014-02-18 01:13:02

标签: php laravel

我在使用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会返回某种错误代码,我可以查找并创建面向用户的消息,但它只是自动返回,我无法创建响应以发送回客户端。有什么想法吗?提前致谢。

2 个答案:

答案 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/
相关问题