File::exists return false for existing file in email job que


File::exists return false for existing file in email job queued

我正在尝试使用Laravel的队列发送电子邮件,在此电子邮件中,如果文件存在,我将显示用户的个人资料图片,使用此函数:

public function getProfilePictureAttribute()
{
    $path = 'users/' . $this->id . '/picture.png';
    if (File::exists(public_path() . $path)) {
        return $path;
    } else {
        return $this->picture_default;
    }
}

我在网络上使用相同的功能,它正在工作,但在电子邮件中,所以通过工匠和表工作,我总是得到默认的图片。我想不明白。

问题解决:

public function getProfilePictureAttribute()
{
    $path = 'users/' . $this->id . '/picture.png';
    if (File::exists(realpath(public_path() . $path))) {
        return $path;
    } else {
        return $this->picture_default;
    }
}

我认为你的文件路径问题,但需要使用绝对路径,如

$absulate_path = 'your absulate path';
// E:/xampp/htdocs/test_projuect      
$path = 'users/' . $this->id . '/picture.png';
 if (file_exists($absulate_path.'/'.$path)) {
   /* do your code
 } else {
       echo "file not exit";
 }

我想这会对你有帮助