Создание страницы PHP, которая запускает скрипт выпуска в Unix - PullRequest
3 голосов
/ 15 марта 2011

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

Моему клиенту очень нравится пачкать руки, и ему все удобнее забираться внутрь и вносить изменения в PHP / HTML, когда я сосредотачиваюсь на чем-то другом.Он на самом деле довольно хорош, и я призываю его продолжать, потому что это хорошо для нас обоих, и он не раздражает меня, делая простые или досадные ошибки.

Я собираюсь настроить его сКлиент SVN, поэтому он может зафиксировать свои изменения, но единственное, что остается выдающимся из этого процесса, - это позволить ему выпустить эти изменения для подготовки и производства.Конечно, я могу дать ему доступ к серверу через.SSH и проведите его через этот процесс, но кажется, что в какой-то момент он может пойти не так.

Я думаю о настройке страницы, защищенной паролем PHP, которая позволит ему запускать эти сценарии.нажав кнопку.

Итак, у меня есть два вопроса:

a) Является ли подход, который я использую на странице PHP, чтобы представить сценарии выпуска разумным, и

б) Как лучше всего реализовать этот тип страниц в PHP?Скрипт представляет собой простой сценарий оболочки

Cheers

Ответы [ 4 ]

1 голос
/ 15 марта 2011

Не изобретайте велосипед, попробуйте Capistranto https://github.com/capistrano/capistrano

1 голос
/ 15 марта 2011

Вы можете использовать exec в PHP для запуска любых команд, которые вам нужно выполнить.Если вы хотите, чтобы он предоставил сообщение о регистрации SVN, вы, вероятно, включите ввод пользователя следующим образом:

exec("svn commit -m '$message'");
// Perform more exec() commands as needed

В этот момент вам нужно быть осторожным - как страница PHP.net на exec() говорит:

"При разрешении передачи пользовательских данных в эту функцию используйте escapeshellarg () или escapeshellcmd (), чтобы гарантировать, что пользователи не смогут обмануть систему в выполнении произвольных команд."

Посетите страницу PHP.net для получения дополнительной информации.

0 голосов
/ 15 марта 2011

Часть А вашего вопроса довольно субъективна, поэтому я просто скажу, что считаю ее разумной. Часть B вашего вопроса довольно проста. В основном вам просто нужно выполнить внешнюю команду через PHP. Это может стать более трудным, если вам нужно, чтобы он работал от имени другого пользователя, отличного от того, на котором работает ваша установка Apache.

В своей основной форме это так же просто, как:

exec('your command here');

При этом вы, вероятно, хотите использовать некоторые кнопки отправки формы для запуска этих команд.

<?php
if ($is_authorized && $push_to_staging) {
  // execute the command to push the repo to staging.
}
?>

Обязательно экранируйте любой пользовательский ввод с помощью escapeshellarg.

0 голосов
/ 15 марта 2011

Я думаю о 2 способах сделать это:

  • выполнить ваш скрипт из php с системой или exec, но это должно быть возможно
  • ваш скрипт php создает токен (файл) и cronjob часто ищет его и запускает ваш скрипт, если токен присутствует (более безопасный)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...