Php 更改web服务器查找图像的默认路径

Php 更改web服务器查找图像的默认路径,php,directory,default,chdir,Php,Directory,Default,Chdir,我正在尝试更改默认路径或添加Web服务器查找图像的路径。我真的很想用PHP而不是htaccess来解决这个问题 最基本的示例是尝试“破坏”当前的实现,因此假设我有一个包含以下内容的目录: main/ image.png index.php 在index.php中: <?php // Change the directory WAY out of current directory chdir('../../../'); echo getcwd(); // DEFINITELY NOT

我正在尝试更改默认路径或添加Web服务器查找图像的路径。我真的很想用PHP而不是htaccess来解决这个问题

最基本的示例是尝试“破坏”当前的实现,因此假设我有一个包含以下内容的目录:

main/

  • image.png
  • index.php
index.php
中:

<?php
// Change the directory WAY out of current directory
chdir('../../../');
echo getcwd(); // DEFINITELY NOT where image.png is located

?>

<img src="image.png" width="402" height="265" alt="1">
<!-- WHY ARE YOU STILL RENDERING?!?! -->

如果你理解我的观点或者有任何问题,请告诉我

谢谢大家!
Matt Mueller

什么是PHP的相对路径和页面的相对路径是两个独立的东西


您更改了当前PHP脚本的目录。但是,请求的页面及其资源仍然是相对于
main/index.php

的,我认为您混淆了服务器文件系统上的当前工作目录和web服务器文档根目录

在HTML中创建图像元素时,它(浏览器)会根据几个参数查找源

  • 如果src路径是相对的(无前导斜杠),则图像将相对于
    元素URL加载(如果已设置),否则将加载当前URI
  • 如果src路径是绝对路径,则图像将从文档根目录的绝对路径加载,例如
    将从
  • 如果src是一个绝对URI,那么它将从该URI加载

  • img标签被发送到客户端。 更改预处理器的目录不会更改客户端的目录,因为该目录已固定到它们所在的当前页面,例如

    您需要更改每个img标记的src来更改要查找的目录

    为了避免将来的混淆,您可以使用一个在正确目录前面加前缀的函数

    e、 g

    “width=“402”height=“265”alt=“1”/
    
    jnpcl做对了:

    <base href="../../../">
    
    
    

    把它放在你的
    之间,通常在
    之后,在你加载任何文件之前lol。这是渲染,因为你在PHP中更改了路径,而不是浏览器:)我想他们是不同的哈哈..伙计..告诉我我我可以做些什么..关于什么?先问一个合理的问题。我看不出让图像无法显示有什么意义ad@jnpcl它不仅会影响images@jnpcl
    元素
    href
    属性需要一个绝对URI,例如
    http://example.com/base/path/
    哦,很有趣。你能快速解释一下数字2和3的区别吗?@Matt Absolute URI是
    http://www.domain.com/foo/bar/baz.jpg
    其中绝对路径is
    /foo/bar/baz.jpg
    <base href="../../../">