我最近在Windows下的Apache2.4下为PHP设置了Imagick。现在的问题是Imagick是从ServerRoot而不是从DocumentRoot运行的。例如,
$img=new Imagick("images/img.jpg");
引发异常。但是
$img=new Imagick("htdocs/images/img.jpg");
有效。 htdocs在ServerRoot中。有任何想法吗 ?
我最近在Windows下的Apache2.4下为PHP设置了Imagick。现在的问题是Imagick是从ServerRoot而不是从DocumentRoot运行的。例如,
$img=new Imagick("images/img.jpg");
引发异常。但是
$img=new Imagick("htdocs/images/img.jpg");
有效。 htdocs在ServerRoot中。有任何想法吗 ?
使用__DIR__
,这是您从中运行PHP脚本的目录。
/**
* When the PHP script is in `/var/www/htdocs/index.php`,* this would load `/var/www/htdocs/images/img.jpg`.
*
* On windows,a script in `C:\htdocs\index.php` would
* result in `C:\htdocs\images\img.jpg`,as slashes are turned
* by PHP automatically.
*/
$img = new Imagick(__DIR__ . '/images/img.jpg');
作为一种与环境无关的方法,您不必关心Apache的ServerRoot
或PHP的安装位置。以通用的方式构建源代码,并在需要时使用环境变量。从项目内部加载图像时,您不需要外部任何东西。外部= ServerRoot的路径,Imagick的路径,...