file_put_contents没有将文本保存到文件

时间:2014-08-01 07:44:55

标签: php

我有一个简单的代码段

$data = '[' . date('d-m-Y H:i:s') . ']: Operation timeout at URL ' . $this->curlInfo['url'];
print $data;
file_put_contents('/logs/curl_timeout.txt', $data);

打印执行以下操作

[01-08-2014 09:42:05] Operation timeout at URL http://example.com

我想将其保存到日志下的curl_timeout.txt文件中。文件和文件夹都有777权限。但它仍然无法正常工作。那里没有文字保存。我做错了吗?

编辑:我也试过先打开它

fopen('/logs/curl_timeout.txt', 'wb');但它仍然没有将文本保存到文件中。

3 个答案:

答案 0 :(得分:1)

似乎看起来像位置和文件的问题。

您是否检查该文件是否存在?

首先尝试使用file_get_contents打印该文件中的内容。

希望这有帮助。

干杯!

答案 1 :(得分:1)

您错误地指定了文件路径:/logs/curl_timeout.txt', $data);我的意思是导致斜杠, 在这种情况下,你应该指定绝对路径,如:/ var / www / public_html..`等..

所以使用相对路径:也许../../logs/curl_timeout.txt', $data);也可能有权限问题检查它

解决方案是:

定义日志路径define('LOG_PATH', '/var/www/...log/...')

比使用它:file_put_contents(LOG_PATH, $data);

如果你有一个级别的tmp日志目录,你可以尝试:file_put_contents(LOG_PATH."../tmp/log/...", $data);

答案 2 :(得分:0)

首先检查返回值:

$result = file_put_contents('/logs/curl_timeout.txt', $data);
var_dump($result);

如果$ result === FALSE那么你有问题。尝试做这样的事情:

$logfile = realpath('./logs/curl_timeout.txt');
$result = file_put_contents($logfile, $data);
var_dump($result);