我一直试图在我的网站上使用php删除.json文件,但无法使其正常工作。看来我找不到正确的文件路径,或者它是不可见的。因此,我认为我应该使用file_exists()进行检查,无论我尝试什么,都无法使系统看到服务器上的文件。
此路径中存在json文件夹 /mytheme/assets/js/geofences/1069.json
正在从此路径运行php /mytheme/inc/filelookingforjson.php
我尝试使用“ ../assets/js ..”使用相对路径将路径指针向上一级发送。
我尝试了绝对文件路径。并表现为文件不存在。在wordpress网站上是否需要做一些htaccess或其他工作? geofences文件夹上的权限设置为可读取,可写等。下面的代码向我发送了一封电子邮件,告诉我没有文件。我确定我的路径错误,如果我能正确解决这个问题,我可以进行取消链接的工作……谢谢您的投入。
$file = '/wp-content/themes/mytheme/assets/js/geofences/1069.json';
if(file_exists($file)){
mail("me@email.com","file exists","file name is there");
} else {me@email.com","file does not exist found","file name is
not there");
}
答案 0 :(得分:0)
如果文件夹结构为:
mytheme/
inc/
filelookingforjson.php
assets/
js/
geofences/
1069.json
然后从PHP文件到json文件的路径为:
../assets/js/geofences/1069.json
但是,考虑到您的PHP文件很可能已被其他PHP文件包含,该路径将是从第一个访问的PHP文件开始的相对路径。
想象一下这个文件结构:
index.php
folder/
foo.php
subfolder/
bar.php
assets/
hello.txt
假设您要读取文件hello.txt
中的文件bar.php
,那么到hello.txt
的相对路径将是../../assets/hello.txt
。如果您直接运行文件bar.php
,这将起作用。
“陷阱”是指您不直接访问bar.php
。
现在让我们说index.php
包括foo.php
,而foo.php
包括bar.php
。
如果您运行index.php
,则bar.php
中的相对路径将不再起作用,因为它与包含链中第一个被访问的PHP文件index.php
无关。
如果您将include
和require
视为“复制/粘贴”,这确实有意义。 PHP从包含的文件中“复制”代码,然后将其“粘贴”到包含文件中。
注意:这当然是其实际工作方式的简化
魔术常数__DIR__
。
如果将其添加到相对路径之前,PHP会将其替换为写入该文件的绝对路径。
代码:
$file = __DIR__ . '/../../assets/hello.txt';
将被PHP读取为:
$file = '/folder/subfolder/../../assets/hello.txt';
现在,什么文件包含bar.php
都无关紧要,因为路径将保持绝对。
当您尝试使用相对路径包含文件时,也会发生同样的事情。
在真实服务器上,绝对路径可能类似于/path/from/the/file-systems/root/folder/assets/hello.txt
。