0

我正在尝试更改默认路径或添加网络服务器查找图像的路径。我真的很想在 PHP 中而不是在 htaccess 中执行此操作。

最基本的例子是试图“打破”当前的实现,所以假设我有一个目录,其中包含以下内容:

主要的/

  • 图像.png
  • 索引.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?!?! -->

如果您理解我的观点或有任何疑问,请告诉我。

谢谢大家!马特·穆勒

4

4 回答 4

5

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

当您在 HTML 中创建图像元素时,它(浏览器)会根据一些参数查找源。

  1. 如果 src 路径是相对的(没有前导斜杠),如果设置,图像将相对于<base>元素 URL 加载,否则为当前 URI
  2. 如果 src 路径是绝对路径,则图像将从文档根目录的绝对路径加载,例如<img src="/foo/bar/baz.jpg">将从http://example.com/foo/bar/baz.jpg加载
  3. 如果 src 是绝对 URI,那么它将简单地从该 URI 加载
于 2010-10-27T00:33:27.567 回答
2

img 标签被发送到客户端。更改预处理器的目录不会更改客户端的目录,因为它固定在它们所在的当前页面上,例如http://example.com/

您需要更改每个 img 标签的 src 以更改要查看的目录。

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

例如

<img src = "<?php echo produceImageURL('image.png'); ?>" width = "402" height = "265" alt = "1" />
于 2010-10-27T01:28:54.893 回答
1

PHP的相对路径和页面的相对路径是什么是两个不同的东西。

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

于 2010-10-27T00:30:48.803 回答
0

jnpcl 说得对:

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

把它放在你<head> </head>通常之后<meta />,在你加载任何文件之前

于 2011-06-18T07:02:25.230 回答