我的路径是这样的
/网站/ PHP的
/网站/ JavaScript的
/website/photographer/index.html
/网站/摄影师/照片
我有一个javascript,显示文件夹中照片的照片库。使用带有jquery的ajax,它调用一个PHP文件,在“照片”中返回图像URL,以便javascript可以设置图库等。
问题是我似乎无法让PHP访问“photos”文件夹。看,我有一堆不同的摄影师页面做同样的事情,所以我试图有一个PHP文件和一个javascript文件,但不同的目录。
我设计的方法是在ajax get调用中发送“window.location.pathname”,以便php可以获取当前页面所在的目录,然后只需搜索该目录中的“photos”文件夹。
chdir($_GET["currentPath"] . "photos"); //change the directory so we just get the file names
echo json_encode(glob("*.jpg"));
我收到此错误: 警告:chdir()[function.chdir]:第4行的/hermes/bosweb/web054/b541/ipg.danielechevarriacom/testing/oneonethousand_test/php/images.php中没有这样的文件或目录(错误号2) []
当我
echo $_GET["currentPath"] . "photos";
它打印:“/ testing / oneonethousand_test / steele / photos”
这是照片所在的正确目录,所以我不知道为什么这不起作用。我假设这与chdir如何工作有关。
我不想做chdir(“../ steele / photos”),因为我会有很多目录,我希望PHP文件保持通用。我只是想能够让javascript告诉php目前的目录是什么,然后PHP切换到该目录。为什么这不起作用?
感谢。
答案 0 :(得分:0)
首先,永远不要相信$ _GET / $ _ POST / etc中的变量。使用您的脚本,我可能会在服务器上的任何目录中列出文件(包括非网络可访问的目录),而不仅仅是您想要的目录。
它不起作用,因为$ _GET [“currentPath”]中的路径是URL,而不是文件夹名称:它设置为“http://danielechevarria.com/testing/oneonethousand_test/steele/”而不是“斯蒂尔”。
将JavaScript发送的变量更改为顶级路径(例如“steele”),并考虑将脚本更改为:
//Validate the path somehow, in this case, reject anything that's not alphanumeric
if(!preg_match("/^\w+$/", $_GET["currentPath"])) die("{'error':'Invalid path'}");
chdir("../" . $_GET["currentPath"] . "/photos");
echo json_encode(glob("*.jpg"));
答案 1 :(得分:0)
chdir需要文件系统路径,而不是http路径。
根据echo命令的输出,看起来它将整个http url(“http://danielechevarria.com/testing/oneonethousand_test/steele/photos”)传递给chdir函数。
答案 2 :(得分:0)
我相信chdir只适用于本地路径,而不适用于Web路径。所以,为了" chdir"到photos目录,你需要FULL系统路径。
即。 / home / user / public_html / photos或C:\ www \ photos
以下是我的意见:不知道你为什么使用ajax和javascript来提取图片和构建图库。为什么不使用PHP来生成图库? Javascript过于复杂了。
答案 3 :(得分:0)
你可以在php中使用curl来调用 (“http://danielechevarria.com/testing/ oneonethousand_test / steele / photos”)