PHP getimagesize()函数的路径

PHP getimagesize()函数的路径,php,path,getimagesize,Php,Path,Getimagesize,对于getimagesize(),文件的正确路径是什么?在我的例子中,我更喜欢绝对路径,但它给出了一个错误,即没有文件,但当我给它一个完整的URL时,没有错误,但也没有输出。图像显示但不显示getimagesize()中的属性 为了澄清这一点,这些图像存储在一个数据库中,其中有一个脚本将它们拉出并提供标题,在本例中,这些标题是从foreach循环中执行的,因为它正在为一个动态菜单拉出多个图像。我过去在其他网站上成功地完成了这项工作,而这段代码来自其中一个工作网站,所以不确定为什么它在这里不起作用

对于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";
echo“$MenuLink\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($\u SERVER['DOCUMENT\u ROOT']”internals/viewers/show\u image.php?ID=$MenuImage”)
,这可能适用于您的情况


另一个编辑:因为您的图像实际上不是图像文件,所以可以将
http://
https://
URL传递到
getimagesize()
调用中。下面是一个示例:
getimagesize(“http://.”$\u服务器['http\u主机].“/internals/viewers/show\u image.php?ID=$MenuImage”)

是的,运行Ubuntu 19.10和PHP7.4。不幸的是,这是我尝试过的许多事情之一,但它也不起作用,当我硬编码完整路径时,它也不起作用。对于在服务器根目录下启动的,通常,以斜杠启动链接会从站点的根文件夹开始,而不是从服务器的根文件夹开始,但如果这也适用于在函数中使用路径,则我发现没有什么是明确的,因此感谢您的澄清。我只是想到,加载链接时,可能无法使用服务器根目录的完整路径,因为这不是实际的图像文件而是一个PHP脚本,从数据库中提取图像,留下一个URL作为唯一选项。但是,虽然没有错误,但即使相同的URL在浏览器中显示图像,它也不会调出值。是的,我的原始答案不起作用。我已经更新了它(请参阅上面的“另一个编辑”)以满足您的需要。我希望这有帮助!这是我也尝试过的许多事情之一,但也没有结果。将完全相同的URL加载到浏览器本身确实会拉起图像,它们也会显示在网站上,但我似乎无法获取属性!在从数据库中获取图像数据之后,在应用头之前,是否应该以当前没有的方式处理或编码图像数据?