即使路径正确,图像也不会显示

时间:2016-06-04 15:01:50

标签: php

现在我的文件结构如下所示:

root
    /images
        /banner.png
    /dir
        /file.php
    /index.php

我在file.php工作。我正在尝试访问banner.png,到目前为止我有这个:

<?php echo dirname( dirname(__FILE__) ) . '/' . $recent1["Image"];?>

$recent1["Image"]images/banner.jpg

当我以纯文本形式回显代码时,此路径显示:

/home/htdocs/images/banner.png

我觉得这是正确的,但我不确定它是否与

完全相同
(root)/images/banner.png

同样,我觉得这两个是相同的,但是当我将上面显示的代码放在src attr的img标记时,图像不显示。它显示了破碎图片图标的东西。是的,我确信images/banner.png存在。感谢您的帮助。

修改:我也可以在index.php中添加,只使用$recent1["Image"]确实会显示图片。

3 个答案:

答案 0 :(得分:0)

尝试使用其他Magic constant

我认为你正在寻找

public class Employee {
    private State state;

    public Memento save() {
        return new Memento(state);
    }

    public void revert(Memento memento) {
        this.state = memento.state;
    }

    public static class Memento {
        private final State state;

        public Memento(State state) {
            this.state = state;
        }
    }

    public static class State {
        private String name;
        private String phone;
    }
}

public class Caretaker {
    private Stack<Employee.Memento> history;

    public Caretaker() {
        history = new Stack<>();
    }

    public void addMemento(Employee.Memento memento) {
        history.push(memento);
    }

    public Employee.Memento getMemento() {
        return history.pop();
    }
}

public class UndoHandler {
    Employee employee;
    Caretaker caretaker;

    public void snapshot() {
        caretaker.save(employee.save());
    }

    public void undo() {
        employee.revert(caretaker.getMemento());
    }
}

使用您提供的示例

__DIR__

答案 1 :(得分:0)

而不是__FILE__,您应该使用$_SERVER['PHP_SELF']documentation解释说:

  

当前正在执行的脚本的文件名,相对于文档根目录。例如,地址http://example.com/foo/bar.php的脚本中的$ _SERVER ['PHP_SELF']将为/foo/bar.php。

<?php echo dirname( dirname($_SERVER['PHP_SELF']) ) . '/' . $recent1["Image"];?>

您也可以使用$_SERVER['SCRIPT_FILENAME']。如果你有像/dir/file.php/foo/bar这样的网址,它们可能会有所不同(这有时候会因为搜索引擎优化的原因而首选,尽管它经常在.htaccess重写为/dir/file.php?param1=foo&param2=bar

您还可以使用相对路径:

<?php echo "../" . $recent1["Image"]; ?>

答案 2 :(得分:0)

提供的代码中的主要问题是您正在调用dirname()两次。

<?php echo dirname( dirname(__FILE__) ) . '/' . $recent1["Image"];?>
  

&#34;给定一个包含文件或目录路径的字符串,该函数将返回父目录的路径,该路径从当前目录升级。&#34;   http://php.net/manual/en/function.dirname.php

实施例

鉴于__FILE__结果为'/home/htdocs/index.php'

dirname(__FILE__) = '/home/htdocs/'

dirname('/home/htdocs/'); = '/home/'

然后,您追加图像路径'/images/banner.jpg'

结果

'home/images/banner.jpg'

路径真的应该

'/home/htdocs/images/banner.jpg'