PHP文件打开/写入的奇怪问题

时间:2013-11-18 18:25:50

标签: php cron server-side

我遇到的问题涉及使用fopen和fwrite写入服务器上的文本文件。当我在浏览器中调用我的函数时,文件将按预期打开并写入。当我从服务器上运行的计划任务调用该函数时,永远不会写入该文件,尽管不会抛出任何错误。我不相信这是一个权限问题,但我不确定它可能是什么。还有其他人经历过这样的事吗?

请参阅我正在使用的以下代码片段:

$file = "../logs/" . $token . ".txt";
$message = "Test Message";
fwrite(fopen($file, 'a+'), $message);

1 个答案:

答案 0 :(得分:1)

当cron执行脚本时(我假设你的意思是带有调度任务的cron),那么脚本的工作目录将是文件系统根/。解决方法:在脚本中使用绝对路径:

$file = "/path/to/logs/" . $token . ".txt";
$message = "Test Message";
fwrite(fopen($file, 'a+'), $message);

或使用__DIR__常量来构建相对于脚本源文件的路径:

$file = __DIR__ . "../logs/" . $token . ".txt";
$message = "Test Message";
fwrite(fopen($file, 'a+'), $message);