【问题标题】:How can I reference the same directory when php file are operating in different folders当php文件在不同文件夹中运行时如何引用同一目录
【发布时间】:2017-08-22 21:05:03
【问题描述】:

我当前的文件夹结构需要不同文件夹和文件夹级别的php文件。我正在使用 foreach 来获取多个文件并将它们显示在模板中。如果我根据使用它的 php 知道 foreach 的去向,它工作正常。但是,一旦不同的 php 文件使用来自不同目录的 foreach,它就无法正确找到它。

目前:

<?php
foreach (glob("media/*.jpg") as $filename){
echo $filename;
?>

文件:

list1.php
foreach.php
-media/
 image1.jpeg
 image2.jpeg
 image3.jpeg
-posts/
 list2.php

有没有办法让 foreach.php 在查看 media/ 图像之前引用同一个文件夹?如果 list1.php & list2.php 使用 foreach.php 会起作用吗?

【问题讨论】:

标签: php foreach directory


【解决方案1】:

绝对!您正在寻找的是一个root-relative 链接,它是以正斜杠为前缀的链接:

<?php
foreach (glob("/media/*.jpg") as $filename){
echo $filename;
?>

相对于根的超链接是相对超链接的子集,其中所有链接都假定从站点的根文件夹(域名)开始。

以上代码在根级别查找media 文件夹内的所有文件。无论运行此代码的文件放置在何处,这都将起作用。

希望这会有所帮助! :)

【讨论】:

  • 你的意思是文档根目录。即带有文档根的前缀:$_SERVER['DOCUMENT_ROOT'] . '/media/*.jpg'?
  • 您实际上不需要使用$_SERVER['DOCUMENT_ROOT'] 指定文档根目录,因为glob() 匹配指定的模式。模式开头的/ 本身表明它应该在文档根目录中查找。
  • 你试过你的代码了吗? Glob 将其读取为相对于系统根目录的绝对文件路径。除非 PHP 入狱。或者更确切地说,这是没有意义的,如果我想遍历文档根目录之外的文件系统的一部分怎么办?
  • 根据我的研究,正斜杠在 PHP 中不起作用。 PHP 可以比 html 看得更远,因为它是服务器运行的。在“list2.php”中进行测试时,它没有找到根目录,而是在“posts/”中寻找不存在的“media/”。另一种方法是使用“../media”退出文件,但这会破坏“list1.php”
【解决方案2】:

如果您遇到一些奇怪的相对路径问题。尝试使您的路径相对于文件。

例如

__DIR__ . '/media/*.jpg'

或文档根目录(注意这是文件路径):

$_SERVER['DOCUMENT_ROOT'] . '/media/*.jpg'

或定义您自己的公共基本路径,并以此为基础:

get_my_files_path() . '/media/*.jpg'

如果需要,您可以将其定义为常量。或者作为代码中的可配置变量。

来自手册(ini包含路径):

include_path string 指定需要的目录列表, 包括、fopen()、file()、readfile() 和 file_get_contents() 函数 查找文件。

不是全局。

相对路径将相对于您当前的工作目录。

【讨论】:

  • 我已经尝试过___DIR___ $_SERVER['DOCUMENT_ROOT'] . '/media/*.jpg' 从那里搜索时如何设置默认文件夹以查看并引用该文件夹?
  • 魔术常数__DIR__ 两边各有两个下划线,而不是三个。
  • @Skaldsyn 默认文件夹是什么意思?
猜你喜欢
  • 1970-01-01
  • 2021-08-26
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
  • 2021-08-16
相关资源
最近更新 更多