Создать скрипт php для установки - PullRequest
0 голосов
/ 12 февраля 2019

Как я могу создать PHP скрипт для установки apache2 ?
Я хотел бы также увидеть установленную версию после завершения.

Вот чтоЯ попытался:

<code><?php  
if (!empty($_GET['act'])) {  
    $output = shell_exec ('apt install nodejs');  
    echo "<pre>$output
";} else {// $ output = shell_exec ('nodejs -v'); // echo"
$output
";?>проверить версию? Php}?>

1 Ответ

0 голосов
/ 12 февраля 2019

Я хочу пролить свет на многочисленные проблемы, которые есть у вашего сценария.Прежде всего, в вашем скрипте много синтаксических ошибок.

1: Например, вы не закрыли else часть вашего условия с помощью }.Итак, ваш браузер покажет что-то вроде localhost is currently unable to handle this request..

2: Теперь перейдем к другому: последние 3 строки вашего скрипта совершенно не нужны, это не вызовет ошибокно он будет отображаться в выходных данных, которые могут изменить то, как вы думаете, что это за ошибка.

3: Вы не получаете вывод, потому что у вас нет 2>&1 в концетвоя команда.Как только вы добавите его в конце своей команды, вы начнете получать сообщение об ошибке разрешения, подобное этому.

ПРЕДУПРЕЖДЕНИЕ: apt не имеет стабильного интерфейса CLI.Используйте с осторожностью в сценариях.

E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?

Теперь эта ошибка означает, что у вас недостаточно прав для запуска команды для установки чего-либо на вашем компьютере.Существует несколько способов решения этой проблемы с разрешениями.Если вы запускаете свой скрипт как www-data, добавьте пользователя в группу sudo, используя следующую команду.

usermod -aG sudo www-data

После добавления пользователя в группу вы можете запускать команды с помощью sudoи вы можете запустить этот скрипт отлично.Вот как должен выглядеть финальный скрипт после решения проблем с разрешениями.

<code><?php

if (!empty($_GET['act'])) {  
$output = shell_exec('sudo apt install nodejs 2>&1');  
echo "<pre>$output
";} else {$ output = shell_exec ('nodejs -v'); echo"
$output
";}?>проверить версию

Таким образом, вы можете заставить свой скрипт выполнять команды для установки пакетов.Дайте мне знать, если у вас есть дополнительные вопросы по этому поводу.

ОБНОВЛЕНИЕ: Я знаю, что выполнение сценария с sudo - "Вредно" и "Не рекомендуется".Но это способ заставить этот скрипт работать. И, Если вы хотите установить пакет, который больше по размеру, добавьте флаг -y в конце вашей команды сразу после nodejs, чтобы сделать предварительный выбор, устанавливать или не устанавливатьпакет.

...