【问题标题】:Paths for images using Apache with Windows使用 Apache 和 Windows 的图像路径
【发布时间】:2010-06-20 20:26:59
【问题描述】:

我在使用带有 Windows 的 Apache 进行本地链接测试时遇到问题。最终链接格式如下:

file:///C:/Documents and Settings/USUARIO/My Documents/xampp/htdocs/my_website/images/january/my_image.jpg

图像不显示。但是,如果我直接从 img 标签中复制 src 并将其粘贴到浏览器(Firefox)中,图像就会显示出来。

我使用以下代码生成链接:

我使用以下方式定义图像目录:define(IMAGE_DIR, dirname(__FILE__).'/images/');
然后我使用以下格式来格式化路径:

$imgPath = IMAGE_DIR.$month.$img;   
if($localServer)
{
   $imgPath = str_replace('/','\\', $imgPath);
   $imgPath = 'file:///'.$imgPath;
}

我做错了什么?

【问题讨论】:

    标签: php apache path src


    【解决方案1】:

    您正在生成在从 Web 服务器加载的页面中使用 file:// URL 的图像源。文件 URL 指示浏览器直接从磁盘加载文件,而不向 Web 服务器发出请求。出于安全原因,Firefox 和其他浏览器不允许 Web 服务器提供的页面引用本地文件,因此不要显示图像。远程访问您网站的人也将无法访问这些文件,因为图像源将是对其计算机上路径的引用。

    要显示图像,您需要更改图像源以引用网络服务器上的位置,例如 images/january/my_image.jpg/images/january/my_image.jpg

    images/january/my_image.jpg 将由 Web 浏览器相对于所请求的页面进行解释。例如,如果图像出现在http://localhost/page1.php 的页面上,那么浏览器将请求http://localhost/images/january/my_image.jpg。但是,如果在@987654321@<strong>subdir</strong>/page1.php 的页面上使用该图像,则浏览器将请求@987654322@<strong>subdir</strong>/images/january/my_image.jpg

    <strong>/</strong>images/january/my_image.jpg 将始终相对于网站的根目录进行解释。 Web 浏览器将为 http://localhost 上的任何页面请求 http://localhost/images/january/my_image.jpg

    如果您需要引用另一个 Web 服务器上的图像,也可以使用绝对 URL,例如,http://otherhost/images/january/my_image.jpg

    【讨论】:

    • 我使用 dirname(FILE) 来定义路径,这样当我使用 include() 包含配置文件时,不同目录中的路径不会改变。如果我使用 define(IMAGE_DIR, '/images/') 在不同目录中包含该配置文件时会不会遇到麻烦?
    • @sala_7 不,使用不同的目录不会有任何问题。无论您的页面位于哪个目录中,以/ 开头的路径将始终指向 Web 服务器上的相同位置。
    • 谢谢一百万!我想我对来自 web 根目录下的包含文件夹的路径感到困惑,该文件夹使用 include() 从其他目录导入页面部分
    【解决方案2】:

    最好使用常量“DIRECTORY_SEPARATOR”而不是'/'或'\'

    【讨论】:

      猜你喜欢
      • 2011-11-05
      • 1970-01-01
      • 2016-03-09
      • 1970-01-01
      • 2020-12-11
      • 2012-08-15
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多