У меня есть общий хостинг с Bluehost. У меня есть SSH доступ к блоку CentOS, и поэтому я могу запускать команды CLI. У меня также есть простой способ публиковать статические веб-сайты, по сути, сохраняя их в именованный каталог под ~/public_html
. Они работают на Apache.
Теперь есть несколько действий (скриптов для запуска), которые я хотел бы запустить на своем сервере и чтобы иметь возможность запускать их по требованию из любого места. Запуск их с веб-страницы кажется наиболее подходящим / удобным. Мне не нравится PHP, и я не опытный в этом, поэтому я хотел бы запускать команды в Bash или Ruby. Сначала я попробовал что-то вроде:
<form method="post" action="./my-bash-script.sh">
<label>First:</label>
<input name="first"/>
<label>Second:</label>
<input name="second"/>
<button>Send</button>
</form>
Это не сработало. Он не выполнил сценарий на сервере и загрузил его. Поэтому я попробовал ту же форму, но изменил action="./my-bash-script.sh"
на action="./my-php-script.php"
, который состоял из:
<?php
$first = $_POST['first'];
$second = $_POST['second'];
system('./my-bash-script.sh ' . escapeshellarg($first) . ' ' . escapeshellarg($second));
?>
Это сработало. Итак, у меня есть рабочее решение, и мой вопрос - , если я поступаю правильно, учитывая, что я не хочу вносить изменения в сервер, на котором работают мои сайты . В частности:
- Прав ли я, предполагая, что у меня есть , чтобы сделать это таким образом (используя PHP для вызова моего сценария, никогда не вызывая сценарий напрямую)?
- Является ли мой PHP-скрипт правильным / безопасным / эффективным? Под этим я подразумеваю, используется ли
system
с escapeshellarg
и . ' '
, связывающими аргументы, правильным способом избежать этого, избегая возможных эксплойтов?
- Стоит ли беспокоиться о разрешениях скриптов PHP и Shell? Я изменил первый на
600
, а второй на 700
.
- Как можно получить код завершения сценария stdout и stderr в сценарии PHP (чтобы я мог вернуть соответствующее сообщение на страницу)?
- Что-нибудь еще, что я должен знать?
- Вы бы порекомендовали другой метод? Помните, что для установки необходимо обеспечить низкое трение, как это было.