Php 为什么fopen在由cron作业执行的文件中失败?

Php 为什么fopen在由cron作业执行的文件中失败?,php,cron,fopen,Php,Cron,Fopen,我在PHP文件中有以下代码: if(!$fp = fopen(__DIR__ . '/up.lock', "c+")) { die('Failed to open up.lock'); } 代码的目的是防止文件的多个实例运行 当我通过web浏览器或通过shell执行文件时,它工作正常。但是,当它作为cron作业执行时,消息无法打开。lock通过电子邮件发送给我 当作为cron作业执行时,它为什么不工作?如何修复它?\uuuu DIR\uuuu需要是一个绝对路径。如果是,你必须确保你的c

我在PHP文件中有以下代码:

if(!$fp = fopen(__DIR__ . '/up.lock', "c+"))
{
    die('Failed to open up.lock');
}
代码的目的是防止文件的多个实例运行

当我通过web浏览器或通过shell执行文件时,它工作正常。但是,当它作为cron作业执行时,消息
无法打开。lock
通过电子邮件发送给我


当作为cron作业执行时,它为什么不工作?如何修复它?

\uuuu DIR\uuuu
需要是一个绝对路径。如果是,你必须确保你的cron用户有足够的权限

“你必须确保你的web浏览器有足够的权限”根本没有意义。我想
\uuuu DIR\uu
创建了一个绝对路径?这不是使用它的目的吗?PHP手册说它返回文件的目录:绝对正确。我需要一些睡眠。因此,请检查启动脚本的用户的权限。你能在脚本上给我们看一下你的cron行和ls-al吗进入我的cron并打印出正确的路径,因此
fopen
中的路径是正确的。我不确定你所说的
ls-al
是什么意思?如果你第一次创建文件时,是从你的web浏览器创建的,那么该文件可能属于你的web服务器用户;在这种情况下,如果您使用一个简单的用户通过cron再次执行脚本,您将无法写入文件,这是“c+”fopen所需的权限