PHP Beginner: использует стандартную практику команды EXEC?
Вопрос
Я просто начинаю 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>
Решение
Есть каталог функций для таких операций: http://www.php.net/manual/en/ref.dir.php.
Другие советы
«Exec» является портативным Boacuse - API! :-) Что не портативно - это строка, представляющая командную строку, которую вы вызываете через «EXEC».
В этом случае вы можете использовать PHP API для чтения каталога. Это портативно на каждой ОС, которую вы используете на вашем сервере.
Бывший: Дире класс в PHP
Использование стандартной практики команды EXEC?
Использование exec
Для взаимодействия с хост-операционной системой является очень не портативной практикой. Для практически любой ситуации есть ОС-независимый раствор; В этом конкретном случае вы можете найти все файлы в текущем каталоге с glob
, readdir
или scandir
.
С использованием eval
В программе, которая принимает любую форму пользовательского ввода, также часто приводит к серьезным рискам безопасности. Ваша программа не страдает от таких рисков в настоящее время, но она также очень тривиальная.
Да, есть лучший способ сделать то, что вы после. Есть Глобай или readdir. для начинающих.
Что касается «стандартной практики», вы увидите много этого в PHP Land. Если разработчик не знает огромную кодовую базу PHP очень хорошо, но знает, что Shell они будут в конечном итоге использовать exect и backticks (``) повсюду, чтобы выполнить свою работу. Это стандартная практика, что некоторые процентных разработчиков PHP ненавидят, и другой процент не мог жить без. Привыкнуть к этому.