Pergunta

Estou apenas começando o PHP. Estou apenas curioso para saber se houver uma maneira melhor de fazer isso. Isso exibe todos os meus scripts na mesma pasta que este script.

Não tenho certeza se é padrão usar o comando EXEC. Não parece muito portátil.

<html>
<head>
   <title>My PHP Practice Scripts</title>
</head>

<body>
   <center><h1>PHP Scripts</h1></center>
   <?php
      exec("ls -1 *.php", $output);

      foreach ($output as &$tmp){
         echo "<a href=\"$tmp\">$tmp</a><br>";
      }
   ?>
</body>
</html>
Foi útil?

Solução

Existem funções de diretório para essas operações: http://www.php.net/manual/en/ref.dir.php

Outras dicas

"Exec" é portátil Beacse é uma API! :-) O que não é portátil é a sequência que representa a linha de comando que você invoca através do "EXEC".

Nesse caso, você pode usar uma API PHP para ler o diretório. Isso é portátil em todos os sistemas operacionais que você usa no seu servidor.

Ex: Dir Class in php

O uso da prática padrão do comando EXEC está?

Não. Usando exec Interagir com o sistema operacional host é uma prática muito não portável. Para praticamente qualquer situação, existe uma solução independente de OS; Nesse caso em particular, você pode encontrar todos os arquivos no diretório atual com glob, readdir ou scandir.

Usando eval Em um programa que aceita qualquer forma de entrada do usuário, também geralmente leva a riscos de segurança graves. Seu programa não sofre de tais riscos atualmente, mas também é muito trivial.

Sim, há uma maneira melhor de fazer o que você procura. Há glob ou readdir para iniciantes.

No que diz respeito à "prática padrão", você verá muito disso em terra PHP. Se um desenvolvedor não conhece muito bem a enorme base de código do PHP, mas conhece o shell que acabará usando o Exec e o Backticks (``) em todo o lugar para fazer o trabalho deles. É uma prática padrão que alguma porcentagem de desenvolvedores de PHP odeiam e outra porcentagem não poderia viver sem. Acostume -se a vê -lo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top