Php 使用chdir(\uuuu DIR\uuuu)后,imagettfbbox不再工作

Php 使用chdir(\uuuu DIR\uuuu)后,imagettfbbox不再工作,php,Php,我正在使用imagettfbbox为动态生成的图像规范化若干长度的文本 我正在使用字体名称的绝对路径。这个很好用 当我在文件顶部使用chdir\uuu DIR\uuuu来简化include时,它就会停止工作,并出现以下错误: Warning: imagettfbbox(): Invalid font filename 我知道问题不是由包含的文件引起的,因为当我为这些文件使用绝对路径而不使用chdir\uu DIR\uuu时,它可以正常工作,如果我使用chdir\uu DIR\uuu而不包含这些

我正在使用imagettfbbox为动态生成的图像规范化若干长度的文本

我正在使用字体名称的绝对路径。这个很好用

当我在文件顶部使用chdir\uuu DIR\uuuu来简化include时,它就会停止工作,并出现以下错误:

Warning: imagettfbbox(): Invalid font filename
我知道问题不是由包含的文件引起的,因为当我为这些文件使用绝对路径而不使用chdir\uu DIR\uuu时,它可以正常工作,如果我使用chdir\uu DIR\uuu而不包含这些文件,它就不起作用

有没有办法让imagettfbbox与chdir\uuuuuuuuuuuuuuu一起工作

编辑:下面是一个代码示例以供澄清

chdir(__DIR__);  //Works if this is removed and I use an absolute path for the include
include '../filename.php';

class Foo {
    public function __construct() {
        $this->font_size = 13;
        $this->font_directory = __DIR__.'/../fonts/';
        $this->font_name = "arial.ttf";
    }
    private function getStringLength($string) {
        $font_size = $this->font_size;
        $font_directory = $this->font_directory;
        $font_name = $this->font_name;
        return imagettfbbox($font_size,0, $font_directory.$font_name, $string)[2]
    }
}
编辑2:如果我重新更改目录,它也可以工作,但我更喜欢更优雅的解决方案:

$old_path = getcwd();
chdir(__DIR__);
include '../filename.php';
chdir($old_path); //now it works again
...

显示如何为imagettfbbox生成文件路径可以显示用于调用imagettfbbox的代码吗?也许可以将其分解为一个简单的代码示例。$font\U目录。$font\U名称不应依赖于chdir。显示echo$font\u目录的输出。$font\u名称@令人高兴的是,这正是您所期望的:C:\wamp\www\httpdocs/。/font/arial。ttf@user3191820正如您所看到的,有东西正在将您的字体名称从ariel.ttf替换为filepath.php。您可以比较这两种情况下的字符串并检查差异。