PHP认为我的绝对路径是相对路径

时间:2018-07-13 12:57:41

标签: php

目前,我已经安装了PHP 7.2,并且试图使spatie / image-optimizer正常工作,但是它以某种方式将我的文字路径视为不存在的路径。如果我给它以下路径:

  

/ data / www / 我的域 /images/thumbnails/700/615/detailed/1/83-221-343-V01.jpg

它将输出以下内容:

  

2018/07/13 14:44:26 [错误] 18931#18931:* 3749在stderr中发送的FastCGI:

     

“ PHP消息:PHP致命错误:未捕获的InvalidArgumentException:

     

/ data / www / 我的域 /images/thumbnails/700/615/detailed/1/83-221-343-V01.jpg

     

中不存在      

/ data / www / 我的域 /app/addons/theme/lib/vendor/spatie/image-optimizer/src/Image.php:14

但是,如果我检查目录,我可以确认文件是否具有正确的权限。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我只是看了Github上的Image类。这是引发异常的地方。

public function __construct(string $pathToImage)
{
    if (! file_exists($pathToImage)) {
        throw new InvalidArgumentException("`{$pathToImage}` does not exist");
    }
    $this->pathToImage = $pathToImage;
}

检查设置是否正确的一种好方法是使用realpath()

Realpath从相对路径创建绝对路径,如果该路径不存在,则返回false。

$path = __DIR__ .'/../../something'; // (imagine __DIR__ is /some/random/path to begin with)
echo $path; // outputs /some/something

您还可以通过输入以下内容来简单地在终端中签入:

ls /path/to/image.jpg

如果列出,它确实存在并且不应引发错误。

答案 1 :(得分:0)

切换到运行php的用户,然后尝试访问该文件。可能是因为您在访问文件的过程中缺少其中一个文件夹的执行权限。