{"id":1048,"date":"2024-05-20T20:26:43","date_gmt":"2024-05-20T23:26:43","guid":{"rendered":"https:\/\/thiagorossi.com.br\/blog\/?p=1048"},"modified":"2025-12-02T18:39:38","modified_gmt":"2025-12-02T21:39:38","slug":"arquivos-diretorios-com-php","status":"publish","type":"post","link":"https:\/\/thiagorossi.com.br\/blog\/arquivos-diretorios-com-php\/","title":{"rendered":"Arquivos Diret\u00f3rios com PHP"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de leitura: <\/span> <span class=\"rt-time\"> 4<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span>\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Arquivos Diret\u00f3rios com PHP<\/strong>: O <strong>PHP<\/strong> possui uma rica cole\u00e7\u00e3o de fun\u00e7\u00f5es nativas para interagir com o <strong>Sistema de Arquivos<\/strong> do servidor. Essa intera\u00e7\u00e3o \u00e9 fundamental para tarefas como criar logs, armazenar dados de configura\u00e7\u00e3o, gerenciar a estrutura de diret\u00f3rios do projeto e manipular arquivos enviados por usu\u00e1rios (<em>uploads<\/em>).<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Dominar essas fun\u00e7\u00f5es permite que suas aplica\u00e7\u00f5es sejam capazes de <strong>persistir<\/strong> e <strong>organizar<\/strong> dados de forma eficaz.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">1. \ud83d\udcc2 Manipula\u00e7\u00e3o de Diret\u00f3rios<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">O gerenciamento da estrutura de diret\u00f3rios \u00e9 feito atrav\u00e9s de fun\u00e7\u00f5es simples e diretas.<\/p>\n\n\n\n<figure class=\"wp-block-table has-medium-font-size\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Fun\u00e7\u00e3o<\/strong><\/td><td><strong>Prop\u00f3sito<\/strong><\/td><td><strong>Exemplo PHP<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong><code>mkdir()<\/code><\/strong><\/td><td>Cria um <strong>novo diret\u00f3rio<\/strong>. Pode aceitar o par\u00e2metro opcional <code>true<\/code> para cria\u00e7\u00e3o recursiva (criar subdiret\u00f3rios ausentes).<\/td><td><code>mkdir('novo_diretorio', 0777, true);<\/code><\/td><\/tr><tr><td><strong><code>rename()<\/code><\/strong><\/td><td><strong>Renomeia<\/strong> um arquivo ou diret\u00f3rio.<\/td><td><code>rename('antigo_dir', 'novo_dir');<\/code><\/td><\/tr><tr><td><strong><code>rmdir()<\/code><\/strong><\/td><td><strong>Remove<\/strong> um diret\u00f3rio, mas ele <strong>deve estar vazio<\/strong>.<\/td><td><code>rmdir('diret\u00f3rio_vazio');<\/code><\/td><\/tr><tr><td><strong><code>is_dir()<\/code><\/strong><\/td><td>Verifica se o caminho especificado \u00e9 um <strong>diret\u00f3rio<\/strong>.<\/td><td><code>if (is_dir('logs')) { ... }<\/code><\/td><\/tr><tr><td><strong><code>scandir()<\/code><\/strong><\/td><td>Retorna um <strong>array<\/strong> com a lista de arquivos e subdiret\u00f3rios dentro de um diret\u00f3rio.<\/td><td><code>$lista = scandir('imagens\/');<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Importante:<\/strong> Para excluir um diret\u00f3rio n\u00e3o vazio, voc\u00ea deve criar uma fun\u00e7\u00e3o recursiva que primeiro remova todos os arquivos e subdiret\u00f3rios antes de chamar <code>rmdir()<\/code>.<\/p>\n<\/blockquote>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">2. \ud83d\udcdd Opera\u00e7\u00f5es de Arquivo (Conte\u00fado Direto)<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Para tarefas comuns de leitura e escrita onde o arquivo n\u00e3o \u00e9 excessivamente grande, o PHP oferece <em>fun\u00e7\u00f5es de conveni\u00eancia<\/em> que manipulam o conte\u00fado do arquivo diretamente.<\/p>\n\n\n\n<figure class=\"wp-block-table has-medium-font-size\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Fun\u00e7\u00e3o<\/strong><\/td><td><strong>Prop\u00f3sito<\/strong><\/td><td><strong>Exemplo PHP<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong><code>file_get_contents()<\/code><\/strong><\/td><td>L\u00ea o <strong>conte\u00fado inteiro<\/strong> de um arquivo para uma <em>string<\/em>.<\/td><td><code>$conteudo = file_get_contents('config.txt');<\/code><\/td><\/tr><tr><td><strong><code>file_put_contents()<\/code><\/strong><\/td><td>Escreve uma <em>string<\/em> no arquivo, <strong>substituindo<\/strong> o conte\u00fado. Opcionalmente, pode-se usar a <em>flag<\/em> <code>FILE_APPEND<\/code> para anexar.<\/td><td><code>file_put_contents('log.txt', 'Novo registro.', FILE_APPEND);<\/code><\/td><\/tr><tr><td><strong><code>unlink()<\/code><\/strong><\/td><td><strong>Exclui<\/strong> um arquivo.<\/td><td><code>unlink('arquivo_antigo.tmp');<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Exemplo: Leitura Simples<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\/\/ Lendo todo o conte\u00fado de um arquivo\n$conteudo = file_get_contents('meu_arquivo.txt');\necho $conteudo; \n?&gt;\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">3. \ud83d\udd04 Opera\u00e7\u00f5es de Arquivo (Fluxo\/Ponteiro)<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Para manipular arquivos grandes ou ter controle granular sobre a leitura (linha por linha, bloco por bloco) e a escrita, voc\u00ea deve usar as fun\u00e7\u00f5es baseadas em fluxo (<em>streams<\/em>), que utilizam um <strong>ponteiro<\/strong> para o arquivo.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Ciclo B\u00e1sico de Fluxo: <code>fopen<\/code> -&gt; <code>fwrite<\/code>\/<code>fread<\/code> -&gt; <code>fclose<\/code><\/h3>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Abrir o Arquivo (<code>fopen<\/code>)<\/strong>: O modo de abertura \u00e9 crucial.\n<ul class=\"wp-block-list\">\n<li><code>'r'<\/code>: Somente leitura.<\/li>\n\n\n\n<li><code>'w'<\/code>: Escrita (cria o arquivo se n\u00e3o existir, ou zera o conte\u00fado se existir).<\/li>\n\n\n\n<li><code>'a'<\/code>: Anexar (mant\u00e9m o conte\u00fado existente e escreve no final).<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Operar (<code>fwrite<\/code>, <code>fread<\/code>, <code>fgets<\/code>)<\/strong>: Realiza a leitura ou escrita.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Fechar o Arquivo (<code>fclose<\/code>)<\/strong>: Libera o recurso do sistema.<\/li>\n<\/ol>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Exemplo: Escrever e Ler Linha por Linha<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\/\/ 1. Escrever (Append)\n$arquivo_w = fopen('log.txt', 'a');\nfwrite($arquivo_w, \"\\nNova entrada de log: \" . date(\"H:i:s\"));\nfclose($arquivo_w);\n\n\/\/ 2. Ler Linha por Linha\n$arquivo_r = fopen('log.txt', 'r');\nwhile (!feof($arquivo_r)) { \/\/ Loop at\u00e9 o Fim do Arquivo\n    $linha = fgets($arquivo_r); \/\/ L\u00ea uma linha por vez\n    echo $linha . \"&lt;br&gt;\";\n}\nfclose($arquivo_r);\n?&gt;\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">4. \ud83d\udd11 Permiss\u00f5es e Metadados<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Permiss\u00f5es (<code>chmod<\/code>)<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">A fun\u00e7\u00e3o <strong><code>chmod()<\/code><\/strong> (change mode) \u00e9 usada para alterar as permiss\u00f5es de acesso de um arquivo ou diret\u00f3rio, utilizando nota\u00e7\u00e3o octal.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><code>0755<\/code>: Comum para diret\u00f3rios. Permite ao propriet\u00e1rio ler, escrever e executar (7), e ao grupo\/outros apenas ler e executar (5).<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><code>0644<\/code>: Comum para arquivos. Permite ao propriet\u00e1rio ler e escrever (6), e ao grupo\/outros apenas ler (4).<\/li>\n<\/ul>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Define permiss\u00f5es para que apenas o propriet\u00e1rio possa modificar (6), e todos possam ler (4)\nchmod('meu_arquivo.txt', 0644); \n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Metadados<\/h3>\n\n\n\n<figure class=\"wp-block-table has-medium-font-size\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Fun\u00e7\u00e3o<\/strong><\/td><td><strong>Prop\u00f3sito<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong><code>file_exists()<\/code><\/strong><\/td><td>Verifica se um arquivo ou diret\u00f3rio existe.<\/td><\/tr><tr><td><strong><code>filesize()<\/code><\/strong><\/td><td>Retorna o <strong>tamanho<\/strong> de um arquivo em bytes.<\/td><\/tr><tr><td><strong><code>filemtime()<\/code><\/strong><\/td><td>Retorna o <strong>timestamp<\/strong> da \u00faltima modifica\u00e7\u00e3o do arquivo.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">5. \u26a0\ufe0f Boas Pr\u00e1ticas e Seguran\u00e7a<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Valida\u00e7\u00e3o de Caminho:<\/strong> Sempre verifique caminhos de arquivo fornecidos pelo usu\u00e1rio para evitar que eles tentem acessar arquivos fora do diret\u00f3rio permitido (ataque de <em>Directory Traversal<\/em>).<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Permiss\u00f5es:<\/strong> Mantenha as permiss\u00f5es o mais restritivas poss\u00edvel. Nunca defina permiss\u00f5es como <code>0777<\/code> em diret\u00f3rios acess\u00edveis pela web, exceto se for estritamente necess\u00e1rio para um diret\u00f3rio de <em>uploads<\/em> (e, mesmo assim, com cautela).<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Use Constantes de Caminho:<\/strong> Utilize <strong><code>__DIR__<\/code><\/strong> e <strong><code>realpath()<\/code><\/strong> ou constantes de configura\u00e7\u00e3o para construir caminhos de arquivo absolutos, tornando seu c\u00f3digo menos suscet\u00edvel a erros de caminho relativo.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">\u2705 Conclus\u00e3o Arquivos Diret\u00f3rios com PHP<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Arquivos Diret\u00f3rios com PHP:<\/strong> O PHP fornece um conjunto completo de ferramentas para manipula\u00e7\u00e3o do sistema de arquivos. Seja atrav\u00e9s das fun\u00e7\u00f5es simples de conte\u00fado (<strong><code>file_get_contents<\/code><\/strong>) ou do controle granular de fluxo (<strong><code>fopen<\/code><\/strong>), \u00e9 poss\u00edvel realizar todas as opera\u00e7\u00f5es necess\u00e1rias. A aten\u00e7\u00e3o \u00e0 seguran\u00e7a, especialmente nas permiss\u00f5es com <strong><code>chmod<\/code><\/strong> e na valida\u00e7\u00e3o de caminhos, \u00e9 vital para construir aplica\u00e7\u00f5es robustas e seguras.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Toda jornada tem um in\u00edcio, e o in\u00edcio para se tornar um desenvolvedor back-end \u00e9 dominar as seguintes tecnologias, que voc\u00ea encontra aqui mesmo:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/category\/sql\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2.webp\" alt=\"SQL\" class=\"wp-image-942\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">SQL<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/category\/php\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png\" alt=\"Capa Curso PHP\" class=\"wp-image-2835\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP-300x169.png 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">PHP<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/category\/laravel\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Laravel.webp\" alt=\"Laravel\" class=\"wp-image-1642\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Laravel.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Laravel-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">Laravel<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">E se voc\u00ea gosta do nosso conte\u00fado, n\u00e3o deixe de contribuir adquirindo os servi\u00e7os e produtos dos nossos apoiadores e empresas que somos associados:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/hostinger.com.br\/?REFERRALCODE=1THIAGO62\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/03\/hostinger.png\" alt=\"Hospedagem Hostinger\" class=\"wp-image-92\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/amzn.to\/3SNDYlc\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/08\/ofertas-amazon.webp\" alt=\"Ofertas Amazon\" class=\"wp-image-1308\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/amzn.to\/3SNKmt0\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/08\/amazonprime.webp\" alt=\"Amazon Prime\" class=\"wp-image-1307\"\/><\/a><\/figure>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de leitura: <\/span> <span class=\"rt-time\"> 4<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span>Arquivos Diret\u00f3rios com PHP: O PHP possui uma rica cole\u00e7\u00e3o de fun\u00e7\u00f5es nativas para interagir&#8230;<\/p>\n","protected":false},"author":1,"featured_media":2835,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-1048","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php","wpcat-11-id"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Arquivos Diret\u00f3rios com PHP - BLOG THIAGO ROSSI<\/title>\n<meta name=\"description\" content=\"Arquivos Diret\u00f3rios com PHP: Neste artigo, vamos explorar as principais fun\u00e7\u00f5es e t\u00e9cnicas para trabalhar com arquivos e diret\u00f3rios em ...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thiagorossi.com.br\/blog\/arquivos-diretorios-com-php\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Arquivos Diret\u00f3rios com PHP - BLOG THIAGO ROSSI\" \/>\n<meta property=\"og:description\" content=\"Arquivos Diret\u00f3rios com PHP: Neste artigo, vamos explorar as principais fun\u00e7\u00f5es e t\u00e9cnicas para trabalhar com arquivos e diret\u00f3rios em ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thiagorossi.com.br\/blog\/arquivos-diretorios-com-php\/\" \/>\n<meta property=\"og:site_name\" content=\"BLOG THIAGO ROSSI\" \/>\n<meta property=\"article:published_time\" content=\"2024-05-20T23:26:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-02T21:39:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png\" \/>\n\t<meta property=\"og:image:width\" content=\"758\" \/>\n\t<meta property=\"og:image:height\" content=\"426\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Thiago Rossi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thiago Rossi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/arquivos-diretorios-com-php\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/arquivos-diretorios-com-php\\\/\"},\"author\":{\"name\":\"Thiago Rossi\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/5f28286948ec2afdeb2e044a2196cd87\"},\"headline\":\"Arquivos Diret\u00f3rios com PHP\",\"datePublished\":\"2024-05-20T23:26:43+00:00\",\"dateModified\":\"2025-12-02T21:39:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/arquivos-diretorios-com-php\\\/\"},\"wordCount\":710,\"publisher\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/arquivos-diretorios-com-php\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/Capa-PHP.png\",\"articleSection\":[\"PHP\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/arquivos-diretorios-com-php\\\/\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/arquivos-diretorios-com-php\\\/\",\"name\":\"Arquivos Diret\u00f3rios com PHP - BLOG THIAGO ROSSI\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/arquivos-diretorios-com-php\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/arquivos-diretorios-com-php\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/Capa-PHP.png\",\"datePublished\":\"2024-05-20T23:26:43+00:00\",\"dateModified\":\"2025-12-02T21:39:38+00:00\",\"description\":\"Arquivos Diret\u00f3rios com PHP: Neste artigo, vamos explorar as principais fun\u00e7\u00f5es e t\u00e9cnicas para trabalhar com arquivos e diret\u00f3rios em ...\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/arquivos-diretorios-com-php\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/arquivos-diretorios-com-php\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/arquivos-diretorios-com-php\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/Capa-PHP.png\",\"contentUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/Capa-PHP.png\",\"width\":758,\"height\":426,\"caption\":\"PHP\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/arquivos-diretorios-com-php\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Arquivos Diret\u00f3rios com PHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\",\"name\":\"THIAGO ROSSI\",\"description\":\"Mais de 20 anos de experi\u00eancia no mercado de TI!\",\"publisher\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\"},\"alternateName\":\"TR | CURSO WEB DEV\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\",\"name\":\"THIAGO ROSSI\",\"alternateName\":\"TR | CURSO WEB DEV\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/new-logo.webp\",\"contentUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/new-logo.webp\",\"width\":300,\"height\":300,\"caption\":\"THIAGO ROSSI\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/linkedin.com\\\/in\\\/thiagox86\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/5f28286948ec2afdeb2e044a2196cd87\",\"name\":\"Thiago Rossi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"caption\":\"Thiago Rossi\"},\"description\":\"Com mais de 20 anos de jornada na tecnologia, minha trajet\u00f3ria evoluiu do ensino t\u00e9cnico \u00e0 arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de solu\u00e7\u00f5es de Intelig\u00eancia Artificial nativa e an\u00e1lise de dados p\u00fablicos, utilizando o ecossistema PHP para transformar dados brutos em transpar\u00eancia e efici\u00eancia. Como autor e desenvolvedor, acredito na democratiza\u00e7\u00e3o do conhecimento. Essa vis\u00e3o resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura at\u00e9 os bastidores da ind\u00fastria de Jogos e IA. No universo de Game Design, sou autor do livro \\\"GDD \u2013 O Guia Definitivo\\\" e documento ativamente meus processos atrav\u00e9s de DevLogs, unindo rigor t\u00e9cnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso \u00e9 conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.\",\"sameAs\":[\"https:\\\/\\\/thiagorossi.com.br\\\/blog\",\"https:\\\/\\\/instagram.com\\\/thiagorossix86\",\"https:\\\/\\\/linkedin.com\\\/in\\\/thiagox86\"],\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/author\\\/thiagorossi\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Arquivos Diret\u00f3rios com PHP - BLOG THIAGO ROSSI","description":"Arquivos Diret\u00f3rios com PHP: Neste artigo, vamos explorar as principais fun\u00e7\u00f5es e t\u00e9cnicas para trabalhar com arquivos e diret\u00f3rios em ...","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:\/\/thiagorossi.com.br\/blog\/arquivos-diretorios-com-php\/","og_locale":"pt_BR","og_type":"article","og_title":"Arquivos Diret\u00f3rios com PHP - BLOG THIAGO ROSSI","og_description":"Arquivos Diret\u00f3rios com PHP: Neste artigo, vamos explorar as principais fun\u00e7\u00f5es e t\u00e9cnicas para trabalhar com arquivos e diret\u00f3rios em ...","og_url":"https:\/\/thiagorossi.com.br\/blog\/arquivos-diretorios-com-php\/","og_site_name":"BLOG THIAGO ROSSI","article_published_time":"2024-05-20T23:26:43+00:00","article_modified_time":"2025-12-02T21:39:38+00:00","og_image":[{"width":758,"height":426,"url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png","type":"image\/png"}],"author":"Thiago Rossi","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Thiago Rossi","Est. tempo de leitura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thiagorossi.com.br\/blog\/arquivos-diretorios-com-php\/#article","isPartOf":{"@id":"https:\/\/thiagorossi.com.br\/blog\/arquivos-diretorios-com-php\/"},"author":{"name":"Thiago Rossi","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/person\/5f28286948ec2afdeb2e044a2196cd87"},"headline":"Arquivos Diret\u00f3rios com PHP","datePublished":"2024-05-20T23:26:43+00:00","dateModified":"2025-12-02T21:39:38+00:00","mainEntityOfPage":{"@id":"https:\/\/thiagorossi.com.br\/blog\/arquivos-diretorios-com-php\/"},"wordCount":710,"publisher":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#organization"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/arquivos-diretorios-com-php\/#primaryimage"},"thumbnailUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png","articleSection":["PHP"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/thiagorossi.com.br\/blog\/arquivos-diretorios-com-php\/","url":"https:\/\/thiagorossi.com.br\/blog\/arquivos-diretorios-com-php\/","name":"Arquivos Diret\u00f3rios com PHP - BLOG THIAGO ROSSI","isPartOf":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thiagorossi.com.br\/blog\/arquivos-diretorios-com-php\/#primaryimage"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/arquivos-diretorios-com-php\/#primaryimage"},"thumbnailUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png","datePublished":"2024-05-20T23:26:43+00:00","dateModified":"2025-12-02T21:39:38+00:00","description":"Arquivos Diret\u00f3rios com PHP: Neste artigo, vamos explorar as principais fun\u00e7\u00f5es e t\u00e9cnicas para trabalhar com arquivos e diret\u00f3rios em ...","breadcrumb":{"@id":"https:\/\/thiagorossi.com.br\/blog\/arquivos-diretorios-com-php\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thiagorossi.com.br\/blog\/arquivos-diretorios-com-php\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/thiagorossi.com.br\/blog\/arquivos-diretorios-com-php\/#primaryimage","url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png","contentUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png","width":758,"height":426,"caption":"PHP"},{"@type":"BreadcrumbList","@id":"https:\/\/thiagorossi.com.br\/blog\/arquivos-diretorios-com-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thiagorossi.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Arquivos Diret\u00f3rios com PHP"}]},{"@type":"WebSite","@id":"https:\/\/thiagorossi.com.br\/blog\/#website","url":"https:\/\/thiagorossi.com.br\/blog\/","name":"THIAGO ROSSI","description":"Mais de 20 anos de experi\u00eancia no mercado de TI!","publisher":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#organization"},"alternateName":"TR | CURSO WEB DEV","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thiagorossi.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/thiagorossi.com.br\/blog\/#organization","name":"THIAGO ROSSI","alternateName":"TR | CURSO WEB DEV","url":"https:\/\/thiagorossi.com.br\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/new-logo.webp","contentUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/new-logo.webp","width":300,"height":300,"caption":"THIAGO ROSSI"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/linkedin.com\/in\/thiagox86"]},{"@type":"Person","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/person\/5f28286948ec2afdeb2e044a2196cd87","name":"Thiago Rossi","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","caption":"Thiago Rossi"},"description":"Com mais de 20 anos de jornada na tecnologia, minha trajet\u00f3ria evoluiu do ensino t\u00e9cnico \u00e0 arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de solu\u00e7\u00f5es de Intelig\u00eancia Artificial nativa e an\u00e1lise de dados p\u00fablicos, utilizando o ecossistema PHP para transformar dados brutos em transpar\u00eancia e efici\u00eancia. Como autor e desenvolvedor, acredito na democratiza\u00e7\u00e3o do conhecimento. Essa vis\u00e3o resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura at\u00e9 os bastidores da ind\u00fastria de Jogos e IA. No universo de Game Design, sou autor do livro \"GDD \u2013 O Guia Definitivo\" e documento ativamente meus processos atrav\u00e9s de DevLogs, unindo rigor t\u00e9cnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso \u00e9 conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.","sameAs":["https:\/\/thiagorossi.com.br\/blog","https:\/\/instagram.com\/thiagorossix86","https:\/\/linkedin.com\/in\/thiagox86"],"url":"https:\/\/thiagorossi.com.br\/blog\/author\/thiagorossi\/"}]}},"_links":{"self":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/1048","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1048"}],"version-history":[{"count":1,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/1048\/revisions"}],"predecessor-version":[{"id":5097,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/1048\/revisions\/5097"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/media\/2835"}],"wp:attachment":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1048"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1048"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1048"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}