Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用于读取远程目录的选项_Php_Parsing_Directory - Fatal编程技术网

Php 用于读取远程目录的选项

Php 用于读取远程目录的选项,php,parsing,directory,Php,Parsing,Directory,我有一个基于特定条件显示图像的脚本。当不满足任何条件时,我希望随机显示一个标准(备份)映像。这些其他映像位于远程服务器上。我已经读到,您不能读取远程服务器上的目录,这是有道理的 我的最佳选择是将一个文件放入远程服务器的映像目录,该目录输出所有映像文件名,以便我可以与其他服务器解析它吗?有没有更简单的方法 我不喜欢使用FTP() 基本上,我可以选择什么来获取文件夹中的图像名称 谢谢, 瑞安 更新: @重量轻,工作起来很有魅力。这正是我认为我想要的解决方案,但在仔细考虑之后,读到即使是“马里奥”也会

我有一个基于特定条件显示图像的脚本。当不满足任何条件时,我希望随机显示一个标准(备份)映像。这些其他映像位于远程服务器上。我已经读到,您不能读取远程服务器上的目录,这是有道理的

我的最佳选择是将一个文件放入远程服务器的映像目录,该目录输出所有映像文件名,以便我可以与其他服务器解析它吗?有没有更简单的方法

我不喜欢使用FTP()

基本上,我可以选择什么来获取文件夹中的图像名称

谢谢, 瑞安

更新:

@重量轻,工作起来很有魅力。这正是我认为我想要的解决方案,但在仔细考虑之后,读到即使是“马里奥”也会有不同的做法,我决定选择“马里奥”,因为对我来说,控制和安全比便利更重要。使用@mario的方法,很难知道您获得的数据是否良好(缺乏控制),并且您正在公开目录/一些服务器信息(安全性)@bensiu的建议涉及第二个文件(不便),但提供了我最终决定使用的控制和安全性

谢谢你们两位


-Ryan

我希望您至少可以访问远程服务器

您可以在那里放置脚本“A”,它将在本地执行任务,返回首选格式(原始文本、JSON、XML…)的图像列表,该脚本将由服务器远程调用


同样明智的做法是,当您调用脚本“A”时,至少要传递一些密钥以防止未加密的访问(这不是完美的解决方案,但可能不够)

如果您的服务器上启用了PHP5和HTTP流包装器,那么将其复制到本地文件是非常容易和简单的:

copy('http://somedomain.com/file.jpeg', '/tmp/file.jpeg');
ome主机禁用copy()函数,然后您可以创建自己的-

<?php 
    function copyemz($file1,$file2){ 
          $contentx =@file_get_contents($file1); 
                   $openedfile = fopen($file2, "w"); 
                   fwrite($openedfile, $contentx); 
                   fclose($openedfile); 
                    if ($contentx === FALSE) { 
                    $status=false; 
                    }else $status=true; 

                    return $status; 
    } 
?>

我更喜欢像@bensiu指出的那样一个精确而专用的处理程序脚本

但另一种方法是读取目录列表。一个简单的Apache生成的mod_索引列表足以满足以下要求:

$html = file_get_contents("http://example.com/images/");
preg_match_all('/<a href="([-\w\d.]+\.(jpeg|png|gif))"/', $html, $uu);
$files = $uu[1];
$html=文件获取内容(“http://example.com/images/");

preg_match_all('/最终他还想显示它们。“当任何条件都不满足时,我想随机显示一个标准(备份)图像”。这是有问题的。为了显示您不需要复制-link是enough要将$file1复制到$file2,我必须知道$file1的路径,这就是我正在尝试的。您是如何获得路径的?嗯……您确定您将获得此文件夹中非默认页面的文件列表吗?@bensiu:显然您需要删除任何tub或empty index.html,如果禁用了目录列表,那么也不行。可以在不清楚的位置配置它,但是在那里设置一个简单的
脚本会更容易。默认情况下,目录列表是禁用的,但我通过.htaccess文件为该目录启用了它们。@RyanS:不知道确切的infos.Above snippet对我来说很有用,但是对于其他文件名的变化,正则表达式必须放松。我又给了它一次机会,它成功了。你提到你也更喜欢远程服务器上的一个专用处理程序,使用你在这里描述的方法会有失败吗?这听起来确实是一种可靠的方法。我想尝试让远程服务器保持u我尽可能不参与,因为我永远不知道我将来会处理什么样的远程服务器,但从我目前所看到的情况来看,您的方法可能仍然是最好的。