{"id":11576,"date":"2024-03-14T14:22:22","date_gmt":"2024-03-14T14:22:22","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/"},"modified":"2025-08-04T13:47:45","modified_gmt":"2025-08-04T13:47:45","slug":"how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/","title":{"rendered":"PHP Directory Traversal with scandir"},"content":{"rendered":"<p>In PHP, you can use the scandir function to browse through all the files and subdirectories in a specified directory. Here is a simple example code:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-variable\">$dir<\/span> = <span class=\"hljs-string\">\"\/path\/to\/directory\"<\/span>;\r\n\r\n<span class=\"hljs-comment\">\/\/ \u626b\u63cf\u76ee\u5f55\u5e76\u83b7\u53d6\u76ee\u5f55\u4e2d\u7684\u6587\u4ef6\u548c\u5b50\u76ee\u5f55<\/span>\r\n<span class=\"hljs-variable\">$files<\/span> = <span class=\"hljs-title function_ invoke__\">scandir<\/span>(<span class=\"hljs-variable\">$dir<\/span>);\r\n\r\n<span class=\"hljs-comment\">\/\/ \u904d\u5386\u6587\u4ef6\u548c\u5b50\u76ee\u5f55<\/span>\r\n<span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-variable\">$files<\/span> <span class=\"hljs-keyword\">as<\/span> <span class=\"hljs-variable\">$file<\/span>) {\r\n    <span class=\"hljs-comment\">\/\/ \u6392\u9664\u5f53\u524d\u76ee\u5f55(.)\u548c\u4e0a\u7ea7\u76ee\u5f55(..)<\/span>\r\n    <span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-variable\">$file<\/span> != <span class=\"hljs-string\">'.'<\/span> &amp;&amp; <span class=\"hljs-variable\">$file<\/span> != <span class=\"hljs-string\">'..'<\/span>) {\r\n        <span class=\"hljs-comment\">\/\/ \u5224\u65ad\u662f\u5426\u4e3a\u76ee\u5f55<\/span>\r\n        <span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-title function_ invoke__\">is_dir<\/span>(<span class=\"hljs-variable\">$dir<\/span> . <span class=\"hljs-string\">'\/'<\/span> . <span class=\"hljs-variable\">$file<\/span>)) {\r\n            <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"Directory: \"<\/span> . <span class=\"hljs-variable\">$file<\/span> . <span class=\"hljs-string\">\"&lt;br&gt;\"<\/span>;\r\n            \r\n            <span class=\"hljs-comment\">\/\/ \u904d\u5386\u5b50\u76ee\u5f55<\/span>\r\n            <span class=\"hljs-variable\">$subfiles<\/span> = <span class=\"hljs-title function_ invoke__\">scandir<\/span>(<span class=\"hljs-variable\">$dir<\/span> . <span class=\"hljs-string\">'\/'<\/span> . <span class=\"hljs-variable\">$file<\/span>);\r\n            <span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-variable\">$subfiles<\/span> <span class=\"hljs-keyword\">as<\/span> <span class=\"hljs-variable\">$subfile<\/span>) {\r\n                <span class=\"hljs-keyword\">if<\/span> (<span class=\"hljs-variable\">$subfile<\/span> != <span class=\"hljs-string\">'.'<\/span> &amp;&amp; <span class=\"hljs-variable\">$subfile<\/span> != <span class=\"hljs-string\">'..'<\/span>) {\r\n                    <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"File: \"<\/span> . <span class=\"hljs-variable\">$subfile<\/span> . <span class=\"hljs-string\">\"&lt;br&gt;\"<\/span>;\r\n                }\r\n            }\r\n        } <span class=\"hljs-keyword\">else<\/span> {\r\n            <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"File: \"<\/span> . <span class=\"hljs-variable\">$file<\/span> . <span class=\"hljs-string\">\"&lt;br&gt;\"<\/span>;\r\n        }\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>In the given code, firstly specify the directory path to iterate through, then use the scandir function to retrieve all files and subdirectories in the directory, and finally loop through to output the names of the files and subdirectories. It is important to note that while iterating, the current directory &#8220;.&#8221; and the parent directory &#8220;..&#8221; are excluded.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In PHP, you can use the scandir function to browse through all the files and subdirectories in a specified directory. Here is a simple example code: $dir = &#8220;\/path\/to\/directory&#8221;; \/\/ \u626b\u63cf\u76ee\u5f55\u5e76\u83b7\u53d6\u76ee\u5f55\u4e2d\u7684\u6587\u4ef6\u548c\u5b50\u76ee\u5f55 $files = scandir($dir); \/\/ \u904d\u5386\u6587\u4ef6\u548c\u5b50\u76ee\u5f55 foreach ($files as $file) { \/\/ \u6392\u9664\u5f53\u524d\u76ee\u5f55(.)\u548c\u4e0a\u7ea7\u76ee\u5f55(..) if ($file != &#8216;.&#8217; &amp;&amp; $file != &#8216;..&#8217;) { \/\/ \u5224\u65ad\u662f\u5426\u4e3a\u76ee\u5f55 if [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[14908,954,660,891,8054],"class_list":["post-11576","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-directory-traversal","tag-file-system","tag-php","tag-php-tutorial","tag-scandir"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PHP Directory Traversal with scandir - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn how to traverse directories in PHP using scandir. Example code for listing files and subdirectories efficiently.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP Directory Traversal with scandir\" \/>\n<meta property=\"og:description\" content=\"Learn how to traverse directories in PHP using scandir. Example code for listing files and subdirectories efficiently.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-14T14:22:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-04T13:47:45+00:00\" \/>\n<meta name=\"author\" content=\"Isabella Edwards\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Isabella Edwards\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/\"},\"author\":{\"name\":\"Isabella Edwards\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd\"},\"headline\":\"PHP Directory Traversal with scandir\",\"datePublished\":\"2024-03-14T14:22:22+00:00\",\"dateModified\":\"2025-08-04T13:47:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/\"},\"wordCount\":87,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"directory traversal\",\"file system\",\"PHP\",\"php tutorial\",\"scandir()\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/\",\"name\":\"PHP Directory Traversal with scandir - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-14T14:22:22+00:00\",\"dateModified\":\"2025-08-04T13:47:45+00:00\",\"description\":\"Learn how to traverse directories in PHP using scandir. Example code for listing files and subdirectories efficiently.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PHP Directory Traversal with scandir\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd\",\"name\":\"Isabella Edwards\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g\",\"caption\":\"Isabella Edwards\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/isabellaedwards\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PHP Directory Traversal with scandir - Blog - Silicon Cloud","description":"Learn how to traverse directories in PHP using scandir. Example code for listing files and subdirectories efficiently.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/","og_locale":"en_US","og_type":"article","og_title":"PHP Directory Traversal with scandir","og_description":"Learn how to traverse directories in PHP using scandir. Example code for listing files and subdirectories efficiently.","og_url":"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-14T14:22:22+00:00","article_modified_time":"2025-08-04T13:47:45+00:00","author":"Isabella Edwards","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Isabella Edwards","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/"},"author":{"name":"Isabella Edwards","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd"},"headline":"PHP Directory Traversal with scandir","datePublished":"2024-03-14T14:22:22+00:00","dateModified":"2025-08-04T13:47:45+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/"},"wordCount":87,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["directory traversal","file system","PHP","php tutorial","scandir()"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/","url":"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/","name":"PHP Directory Traversal with scandir - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-14T14:22:22+00:00","dateModified":"2025-08-04T13:47:45+00:00","description":"Learn how to traverse directories in PHP using scandir. Example code for listing files and subdirectories efficiently.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-can-we-achieve-the-functionality-of-traversing-a-specified-directory-in-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PHP Directory Traversal with scandir"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd","name":"Isabella Edwards","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g","caption":"Isabella Edwards"},"url":"https:\/\/www.silicloud.com\/blog\/author\/isabellaedwards\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/11576","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=11576"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/11576\/revisions"}],"predecessor-version":[{"id":155352,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/11576\/revisions\/155352"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=11576"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=11576"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=11576"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}