我有在网络服务器上运行的以下代码。
if ($file == 'PDF')
{
echo '<tr><td><a name="'.$file.'"></a><a href="/'.$upath.'PDF/index.php"><img id="pdfImg" src="/images/PDF.png" alt="'.$file.'" style="z-index: 0; width:auto;max-width:500px;height:auto;max-height:500px"/></a><p><a href="/'.$upath.'PDF/index.php"><span style="color:#777AFF; font-weight:bold">'.$file.'</a></p></span></td><td><p><a href="/nodelete.php"><span style="color:#F44; font-weight:bold">'.$deletetxt.'</span></a></p>';
$i++;
}
elseif (($ext=='jpg') || ($ext=='jpeg') || ($ext=='png') || ($ext=='gif') || ($ext=='webp'))
{
echo '<tr><td colspan="3"><a name="'.$file.'"><hr></a><span style="color:#666; font-weight:bold"><p>'.$file.' '.$filesize.'KB<br/>'.$imgwidth.$seppx.$imgheight.$px.' '.$resolution.$dpitxt.'<br/>'.$imagewidthin.$sepin.$imageheightin.$inchestxt.$imagewidthcm.$sepcm.$imageheightcm.$centimeterstxt.'</p></span></td></tr><tr><td><img id="myImg" class="js-img" src="'.$file.'" alt="'.$file.'" style="z-index: 0; width:'.$filelistwidth.';max-width:'.$filelistmaxwidth.';height:'.$filelistheight.';max-height:'.$filelistmaxheight.'"/></td><td><p><a href="/delete.php?image='.$file.'"><span style="color:#F44; font-weight:bold">'.$deletetxt.'</span></a></p>';
$i++;
}
else
{
$i++;
}
虽然流式处理代码时发生了一件非常奇怪的事情,但我注意到我并不需要像以前认为的那样对bases JPG进行base64编码。进一步说明...这些文件中的某些文件位于PAM用户中,文件位于Web文件夹的外部。像/ home / user / Pictures这样的文件夹。这些用户具有SESSION密码Variable PAM。由于某些原因,它按原样工作。我以为不会。
这没有我在/ home / user / Pictures中用于文件的base64编码
这听起来像是一个愚蠢的问题,但我认为无法从Web服务器访问这些,事实证明它们是可以解决的。
当我在本地计算机上运行它时,我并不担心它,但是还需要代码在其他计算机上工作。这就是我所关心的。
我很好奇,如果这是允许进行此设置的Apache设置或PHP设置,也许我可以保留elseif,它对诸如/ home / user / Pictures之类的文件夹中的PAM用户使用base64
在我的旧代码中,我总是不得不使用
$b64image = base64_encode(file_get_contents($_SESSION['userpath'].$file));
然后将图像替换为$ b64image
那么,什么服务器选项导致此工作不起作用?
EDIT ____________________________________ 我做了几个简单的测试。我无法从此页面访问这些文件之一。我甚至将文件名放在路径变量中。
<html>
<head>
</head>
<body>
<?php
$path='/home/kodi/Pictures/scans/';
echo '<img src="'.$path.'Escan20190428221412.jpg">';
?>
</body>
</html>
所以我的问题仍然是为什么上述代码为何有效?