PHP per principianti: utilizza la pratica standard comando exec?
Domanda
Sono solo iniziando php. Sono solo curioso di sapere se c'è un modo migliore per farlo. Questa mostra tutti i miei script nella stessa cartella di questo script.
Non sono sicuro se è standard per utilizzare il comando exec. Non sembra molto portabile.
<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>
Soluzione
Ci sono funzioni di directory per tali operazioni: http: //www.php. net / manuale / it / ref.dir.php
Altri suggerimenti
"exec" è allucinante portatile è un'API! :-) Ciò che non è portatile è la stringa che rappresenta la linea di comando si invoke attraverso "exec".
In questo caso è possibile utilizzare un API PHP per leggere la directory. Questo è il portatile su ogni sistema operativo di utilizzare sul vostro server.
Esempio: dir classe in PHP
E 'sicuro utilizzare la prassi comando exec?
No. Utilizzando exec
per interagire con il sistema operativo host è una pratica decisamente non portabile. Per qualsiasi situazione, non v'è una soluzione indipendente dal sistema operativo; in questo caso particolare, si possono trovare tutti i file nella directory corrente con glob
, readdir
o scandir
.
Utilizzando eval
in un programma che accetta qualsiasi forma di input da parte dell'utente anche spesso porta a gravi rischi per la sicurezza. Il vostro programma non soffre di tali rischi attualmente, ma è anche molto banale.
Sì, c'è un modo migliore per fare quello che stai cercando. C'è glob o readdir per cominciare.
Per quanto riguarda la "pratica standard va", vedrete un sacco di questo paese in PHP. Se uno sviluppatore non sa enorme base di codice PHP molto bene, ma sa il guscio finiranno utilizzando exec e apici inversi ( ``) in tutto il luogo per ottenere il loro lavoro fatto. E 'una pratica standard che una certa percentuale di sviluppatori PHP odio, e un'altra percentuale non poteva vivere senza. Abituati a vederlo.