【问题标题】:Codeigniter relative path fileCodeigniter 相对路径文件
【发布时间】:2013-01-04 17:12:42
【问题描述】:

我是 codeigniter(和一般 php)的新手,我正在按照教程学习它。 点击此链接:https://www.codeigniter.com/user_guide/tutorial/static_pages.html

在控制器中,它使用检查文件是否存在

 if ( ! file_exists('application/views/pages/'.$page.'.php'))

我的问题是:这个脚本是从 application/controllers/pages.php 运行的,所以file_exists 相对于当前脚本的路径不是吗?也就是说它应该指向 application/controllers/application/views/pages/'.$page.'.php'。

然而事实并非如此,路径实际上是检查相对于路径根目录的文件! 那么这是php问题还是codeigniter?

谢谢。

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    所有路径都相对于 entry 脚本(可能是 index.php 或 Codeigniter 使用的任何内容)。

    要获取相对于当前脚本的路径,请使用__FILE__ 常量。

    file_exists(dirname(__FILE__) . "/path/to/file.php");
    

    【讨论】:

    • 通常,index.phpapplication 在同一个文件夹中,这就是file_exists('application/views/pages/'.$page.'.php') 起作用的原因。由于它可能很棘手,我通常更喜欢按照 hakre 的建议使用 file_exists(__DIR__ . 'path/relative/to/current/php/file' 给它一个绝对路径
    • file_exists 如果给定路径是目录路径,则返回 true。最好使用 is_file() 函数。
    • 非常感谢 :) 仅 PHP 或其他一些语言是这种情况吗?因为我不记得我在 java、python 或 c++ 中遇到过这种情况。
    • 我不了解 python,但 Java 和 C++ 是编译语言,所以没有实际意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 2012-01-28
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 2018-05-05
    相关资源
    最近更新 更多