PHP Beginner: использует ли команда exec стандартную практику? - PullRequest
4 голосов
/ 22 октября 2010

Я только начинаю php. Мне просто любопытно, есть ли лучший способ сделать это. Это отображает все мои скрипты в той же папке, что и этот скрипт.

Я не уверен, является ли стандартным использование команды exec. Это не кажется очень портативным.

<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>

Ответы [ 4 ]

3 голосов
/ 22 октября 2010

Существуют функции каталога для таких операций: http://www.php.net/manual/en/ref.dir.php

1 голос
/ 22 октября 2010

Использует ли стандартная практика команды exec?

Нет.Использование exec для взаимодействия с операционной системой хоста - очень непереносимая практика.Практически для любой ситуации существует независимое от ОС решение;в этом конкретном случае вы можете найти все файлы в текущем каталоге с glob, readdir или scandir.

Использование eval в программе, которая принимает любые формы пользовательского ввода, также часто приводит к серьезным угрозам безопасности.Ваша программа в настоящее время не страдает от таких рисков, но она также очень тривиальна.

1 голос
/ 22 октября 2010

"exec" является переносимым, потому что это API! :-) Что не переносимо, так это строка, представляющая командную строку, которую вы вызываете через «exec».

В этом случае вы можете использовать PHP API для чтения каталога. Это переносимо в каждой ОС, которую вы используете на своем сервере.

Пример: класс dir в PHP

0 голосов
/ 23 октября 2010

Да, есть лучший способ сделать то, что вы ищете. Для начала есть glob или readdir .

Что касается "стандартной практики", вы увидите многое из этого на PHP-земле. Если разработчик не очень хорошо знает огромную кодовую базу PHP, но знает оболочку, он будет использовать exec и backticks (``) повсюду для выполнения своей работы. Это стандартная практика, которую ненавидят некоторые разработчики PHP, а другой не может жить без нее. Привыкайте видеть это.

...