PHP Beginner: Usando a prática padrão do comando EXEC?
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>
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.