Codeigniter - 如何在应用程序文件夹之外动态获取相对/绝对路径

44
我希望在应用程序文件夹之外、与其处于同一级别的位置上建立一个临时缓存文件夹,用于在将图片移至外部网站前暂存图片。我试图获取用户的Facebook个人资料图片并将其保存至我的服务器。我有一个图片存储解决方案,需要我重命名照片,然后将其传递到相应的位置进行存储。我的想法是使用file_get_contents()file_put_contents()函数,在处理完文件之前,可以将该文件暂存一段时间,然后将其复制/移动到我的存储方法中。但是,我不希望将临时目录放在应用程序文件夹内,而是希望将其放在与应用程序和系统文件夹同一级别的位置上。我的问题是如何访问相对路径或绝对路径(与应用程序文件夹在同一级别),而不是硬编码。使用(__dir__)(__file__)和类似于realpath(APPPATH)的东西只能给出应用程序文件夹内的结果。因此,我希望有人知道如何实现这一点。
1个回答

134
在根目录下的index.php文件中,定义了大部分有用的路径,以便您可以在其余的代码中使用它们。您在这种情况下尝试过FCPATH吗?
FCPATH   -> '/'
BASEPATH -> '/system/'
APPPATH  -> '/application/'

更新: 如评论中所述,上面的路径示例仅供概览。为了增加项目的安全性,BASEPATHAPPPATH不应在FCPATH内,而应该在公共www/root目录之外。


我甚至没有想到要回到index.php中查找,很久以前我了解了APPPATH,很少有需要做其他的事情。但这正好做到了我所寻求的。谢谢。 - chris
不客气。我觉得有点奇怪,你知道如何使用APPPATH,却不知道FCPATH :) - Robin Castlin
1
我自己也觉得有点奇怪哈哈,因为曾经有一段时间我在CI上爬来爬去,试图找出类似的东西。但总是那些简单的事情让我无法理解,尤其是当我深入到某个方面或另一个方面试图弄清楚其他事情时,然后转身把它变得比需要的更加困难。具有讽刺意味的是,在你回复之前,我甚至考虑进入index.php并自己定义一些内容作为最后的努力,然后你回答了我,并提醒我已经有了 :-) - chris
1
为了最安全的CI安装,systemapplication文件夹应该安装在www或公共根目录之外。在这种情况下,应注意FCPATH不会位于systemapplication的根目录中。FCPATH代表www目录(其中包含index.php;FC = 前端控制器)。换句话说,在systemapplication文件夹安装在www目录内时,才能使用此答案中显示的目录结构。 - Sparky
没错,Sparky。添加到答案中了。 - Robin Castlin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接