Frage

Ich bin gerade erst php. Ich bin nur neugierig, ob es ein besserer Weg, dies zu tun. Dies zeigt alle meine Skripte im selben Ordner wie das Skript.

Ich bin nicht sicher, ob es Standard ist, den Befehl exec zu verwenden. Es ist nicht sehr portabel zu sein scheint.

<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>
War es hilfreich?

Lösung

Es gibt Verzeichnisfunktionen für solche Operationen: http: //www.php. net / manual / en / ref.dir.php

Andere Tipps

"exec" ist tragbar beacuse ist eine API! :-) Was nicht tragbar ist, ist der String, der die Befehlszeile Sie invoke durch „exec“.

steht

In diesem Fall können Sie einen PHP-API verwenden, um das Verzeichnis zu lesen. Das ist tragbar auf jedem Betriebssystem Sie auf Ihrem Server verwenden.

Ex: dir Klasse in PHP

  

Ist der Befehl exec gängige Praxis mit?

Nein. Mit exec mit dem Host-Betriebssystem zu interagieren ist eine sehr nicht-portable Praxis. Für nahezu jede Situation gibt es eine OS-unabhängige Lösung; in diesem speziellen Fall können Sie alle Dateien im aktuellen Verzeichnis mit glob finden , readdir oder scandir .

Mit eval in einem Programm, das führt auch jede Form von Benutzereingaben akzeptiert oft zu ernsthaften Sicherheitsrisiken. Ihr Programm leidet nicht an diesen Risiken zur Zeit, aber es ist auch sehr trivial.

Ja, es gibt einen besseren Weg zu tun, was Sie wollen. Es gibt glob oder readdir für den Anfang.

Was „gängige Praxis geht“, werden Sie eine Menge von diesem in PHP Land sehen. Wenn ein Entwickler nicht weiß riesige Code-Basis des PHP sehr gut, aber die Shell kennt sie exec und Backticks am Ende dann mit ( ``) in dem ganzen Ort, um ihre Arbeit zu erledigen. Es ist eine gängige Praxis, dass ein gewisser Prozentsatz von PHP-Entwickler hassen, und ein anderer Prozentsatz ohne nicht leben konnte. Gewöhnen Sie es auf Ihren Besuch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top