Php 如何打开位于服务器上另一个目录中的imgs文件?

Php 如何打开位于服务器上另一个目录中的imgs文件?,php,wordpress,redirect,directory,wordpress-theming,Php,Wordpress,Redirect,Directory,Wordpress Theming,我对Stackoverflow、PHP和WP主题制作非常陌生,我面临以下问题:我正在博客主页上开发一个图像旋转木马(位于主题目录中的home.PHP),但我需要在不同的目录中检索图像(/wordpress/WP content/uploads/HP/carousel),因为,为最终用户着想,我正在使用Max Foundry的Wordpress媒体库文件夹()为转盘制作一个特定的文件夹,以简化最终用户上传转盘的过程 我尝试了PHP函数opendir()或scandir()以及glob(),如果目录

我对Stackoverflow、PHP和WP主题制作非常陌生,我面临以下问题:我正在博客主页上开发一个图像旋转木马(位于主题目录中的
home.PHP
),但我需要在不同的目录中检索图像(
/wordpress/WP content/uploads/HP/carousel
),因为,为最终用户着想,我正在使用Max Foundry的Wordpress媒体库文件夹()为转盘制作一个特定的文件夹,以简化最终用户上传转盘的过程

我尝试了PHP函数
opendir()
scandir()
以及
glob()
,如果目录在同一个主题目录中,它就会起作用,但是我的客户端应该使用类似FTP和Filezilla的东西,我不希望他让他玩可能破坏我工作的工具。所以我在网上寻找了另一种解决方案:我发现我应该使用像
ABSPATH
或idk这样的东西,根本不起作用,它不识别字符串作为路径。我还尝试了WP函数
get\u site\u url()
,该函数在页面的另一个部分中用于类似的目的,但在这里它不起作用

$dir = get_site_url().'/wp-content/uploads/HP/carousel/';

if (is_dir($dir)) //testing if it's a directory
  printf($dir);
else {
  echo 'not a directory';
}
使用
ABSPATH
得到相同的结果。很明显,如果我尝试用opendir打开目录,它会返回一个错误

我还在学习,我找不到一个好的参考来解释这个函数和全局变量是如何工作的,所以我想我缺少了一些东西。 我希望我的代码打开另一个目录,它是本地的,因为它位于同一台服务器上,来自另一个目录,特别是我构建主题的目录。 非常感谢您的时间和最终的帮助


编辑:谢谢@cptnk和@Uri Chachick,我不知道函数
wp\u upload\u dir()
,现在路径被识别为目录,但是如果我尝试使用
opendir()
scandir()
glob()读取其内容
我放置的数组—我猜—在尝试打印时,内容结果为空。我认为问题来自于字符串的格式化,其中包含
\
/
,因此我将所有反斜杠都改为正斜杠,但仍然没有,我无法检索目录中的图像(现在已正确到达)。我怎样才能访问这些图像?

我个人从未使用过media library+,但据我所知,它只增强了wordpress后端的功能,而且您仍然以正常方式与附件交互

这意味着您在查询附件url后仍然可以使用和检索附件url之类的函数

如果您的代码要求您找到您也可以使用的实际路径

编辑:我想我现在明白了你真正想要达到的目标或者问题所在。我认为你对URL和路径有一个误解

URL(统一资源定位器)不代表您的文件系统,它用于通过Web服务器(nginx、apache…)为资源(html、css、js、img…)提供服务

路径表示机器上的当前位置(C:\Users\you\pictures,/home/pictures…)

服务器通常只知道路径以及如何将它们“映射”在一起。您作为客户机永远不能看到文件路径,只能看到URL。这就是为什么像wp_upload_dir和wp_get_attachment_url这样的wordpress方法存在的原因,所以在呈现HTML之前,您不必手动将路径转换为url

现在,您可能希望从插件为您创建的文件夹中检索图像(堆栈溢出回答:)

我个人不喜欢这种方法有几个原因,大多数人可能会创建一个自定义的帖子类型,或者使用带有选项页面功能()的ACF插件来保存信息。

您可以像这样使用wp\u upload\u dir()

$upload_dir = wp_upload_dir();
$dir = $upload_dir['basedir'].'/HP/carousel/';

if(is_dir($dir))  //testing if it's a directory
    printf($dir);
else {
    echo 'not a directory';
}

get_site_url不是您应该首先使用的,因为它是用于url的,而不是用于文件系统路径。如果你没有意识到这一差异,那么首先就去读一读/弄清楚这一点。其次,给我们一个适当的问题描述——而不仅仅是“不起作用”。制作一个$dir的调试输出,看看它是否包含您期望的内容,或者如果不包含,还有什么其他内容。@misorude向您提供评论,我认为“不起作用”的内容很清楚,因为其他用户不理解它,但我将编辑我的问题以使其更清楚。“不工作”的意思是我无法找到我要找的目录(第2段第5行)。我还知道get_site_url()用于url,正如函数名所述,我的意思是我尝试使用url和文件系统路径来打开目录,但我不知道如何正确操作,因为我想做的事情不起作用。谢谢,我更新了问题,解决了一半问题,请看一看。我尝试使用“scandir”列出目录中的文件。你能粘贴包括scandir部分在内的全部代码吗?很抱歉迟到了,我终于按照建议使用自定义帖子解决了问题。非常感谢,我感谢你尝试帮助我回答你,我更新了问题解决了一半问题,请看一看。