繁体   English   中英

PHP getimagesize() 函数的路径

[英]Path For PHP getimagesize() Function

对于 getimagesize(),用于文件的正确路径是什么? 就我而言,我更喜欢绝对路径,但它给出了没有文件的错误,但是当我给它一个完整的 URL 时,没有错误但也没有输出。 图像显示但不显示 getimagesize() 的属性。

澄清一下,图像存储在数据库中,有一个脚本将它们拉出并提供标题,在这种情况下,这是从 foreach 循环中这样做的,因为它为动态菜单拉出多个图像。 我过去在其他网站上成功完成了此操作,此代码来自这些工作网站之一,因此不确定为什么它在这里不起作用!

问题是,什么是正确的路径类型,为什么没有输出?

这(首选)给出了没有图像的错误:

list($width, $height, $type, $attr) = getimagesize("/internals/viewers/show_image.php?ID=$MenuImage");
$imagetags = (!empty($attr)) ? $attr : "";

这也没有但没有属性:

list($width, $height, $type, $attr) = getimagesize("http://domain.loc/internals/viewers/show_image.php?ID=$MenuImage");
$imagetags = (!empty($attr)) ? $attr : "";

使用以下方式显示的图像:

echo "$MenuLink<img src=\"/internals/viewers/show_image.php?ID=$MenuImage\" alt=\"$MenuName\" title=\"$MenuDescription\" class=\"MenuTab\"$imagetags></a>\n";

这是 show_image.php:

<?php include $_SERVER ['DOCUMENT_ROOT'] . "/internals/configuration/common.php";

$ImageID = (isset($_GET['ID'])) ? $_GET['ID'] : "";

if (!$ImageID) die ("No image");

    $sqlImage = "SELECT Image, ImageFormat FROM images WHERE ID='$ImageID'";
    $rowImage = DBConnect($sqlImage, "Select", $siteDB);

if (!empty($rowImage)) :
    $mime_type = $rowImage['ImageFormat'];
    $SiteImage = $rowImage['Image'];
    header("Pragma: no-cache");
    header("Content-type: image/$mime_type");
    echo $SiteImage;
    imagedestroy($SiteImage);
endif; ?>

假设您在 Linux 或 MacOS 上运行它,以/开头的路径在整个硬盘驱动器根目录下启动。 因为 PHP 在服务器端运行,所以它不知道您的 Web 服务器目录的根目录在哪里。 最好使用类似/opt/apache/htdocs/internals/viewers (只是一个例子)或相对路径的东西。 我一般使用相对路径。

编辑:您可以尝试使用getimagesize($_SERVER['DOCUMENT_ROOT'] . "internals/viewers/show_image.php?ID=$MenuImage") ,这可能适用于您的情况。

另一个编辑:因为您的图像实际上不是图像文件,所以您可以将http://https:// URL 传递到您的getimagesize()调用中。 这是一个例子: getimagesize("http://" . $_SERVER['HTTP_HOST'] . "/internals/viewers/show_image.php?ID=$MenuImage");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM