我最近更新了我的一台服务器,从那以后,我遇到了一些特定
PHP命令的问题(见下文).我认为这是一个配置问题,但我已经研究了几件事,不知道任何进一步的事情.所以也许你们其中一个人有个好主意:
我使用以下代码以显示Intranet站点上的标准徽标或用户定义的徽标:
if(L_HEADER) {
$logo = L_HEADER;
}
else {
$logo = 'logo.png';
}
$properties = getimagesize(CONFIG_URL . 'images/' . $logo)
L_HEADER和CONFIG_URL是具有预定义值的常量(另一个文件):
> L_HEADER包含“opb_beta.png”
> CONFIG_URL包含“http://billing.intranet.opb/”
连接正常工作,这也由Apache日志文件的错误消息确认:
PHP Warning: getimagesize(07001): failed to open stream: HTTP request failed! HTTP/1.1 404 NOT FOUND
in /var/www/billing/templates/header.inc.php on line 42
所以第一个明显的结论是:路径是错误的.但它不是,相信我.我检查了1.000次.实际上,第一个好奇心是图像在同一文件的代码中进一步向下显示并正确引用了几行:
echo '
width="' . $properties[0] . '" height = "' . $properties[1] . '" />";
当我得到上面提到的错误时,高度和宽度都是“0”,但是查看源代码,URL很好,手动访问它会打开图像,当用手动值替换宽度和高度时,图像显示得很好.
虽然更加好奇(以及我当前的finx),当将getimagesize更改为以下内容时,它的工作正常:
$properties = getimagesize($_SERVER['DOCUMENT_ROOT'] . /public_html/images/' . $logo);
我会提到我正在使用Apache的重定向;这就是为什么在URL中你没有看到“public_html”,而在第二个例子的绝对路径中你确实看到了它.
“file_exists”也是如此. URL不起作用,同一文件的绝对本地路径.
另一个好奇心:在另一段代码中,我正在网上查看更新.在那里,我正在使用带有file_exists和fopen的“真实”公共URL.我看起来像这样,工作得非常好:
if(file_exists('http://desk.co.cr/df_stable.txt') {
if(($handle = fopen('http://desk.co.cr/df_stable.txt', 'r')) !== FALSE) {
// some other code
}
}
现在,我已经检查过的东西:
>对于整个路径,文件权限设置正确,www-data是所有文件的组和所有者,对图像文件具有读写访问权限
> allow_url_fopen设置为“On”.
> open_basedir设置为“无值”,并且Apache的虚拟主机定义中没有覆盖.
>文件确定存在且语法路径正确.
一些背景信息:
>服务器在Ubuntu 14.04 LTS上运行
> Apache 2.4.7
> PHP 5.5.9
现在,我没有想法.