У меня есть сайт для моих студентов, и он работает на Ubuntu 14.04. Когда мои студенты регистрируются на моем сайте, я сохраняю информацию о пользователе в базе данных MySQL.
Я хотел бы предоставить моим студентам веб-сайт с моей установкой Ubuntu при регистрации на моем сайте, и я хотел бы, чтобы это было автоматизировано. Мой вопрос: могу ли я каким-то образом использовать данные прямо из базы данных MySQL, чтобы предоставить им поддомен (username.mydoamin.com) на моем Ubuntu, или я могу выполнять команды оболочки на Ubuntu из PHP и автоматизировать то, что я делаю сейчас вручную?
я могу выполнить команды оболочки на Ubuntu от PHP и автоматизировать то, что я делаю вручную теперь?
можно выполнить команды оболочки из PHP
использование shell_exec()
функция или использование ` `
(обратная галочка) оператор: если Вы работаете PHP
< 5.4.0, сначала удостоверьтесь, что отключили безопасный режим , затем в Вашем PHP
сценарий, можно использовать любой из тех синтаксисов:
$return = shell_exec('<shell_command>');
$return = `<shell_command>`;
, Если Вы не хотите получить возвращаемые значения от единственных команд, самый простой способ сделать, что Вы просите, состоял бы в том, чтобы конденсировать все, что Вы делаете вручную в оболочке в автономное bash
(или безотносительно) сценарий, который назовут однажды при помощи любого из тех методов. Например, синтаксис для bash
сценарий был бы:
$return = shell_exec('bash script.sh');
$return = `bash script.sh`;
Для передачи параметров сценарию (например, значение $username
переменная):
$return = shell_exec("bash script.sh '$username'");
$return = `bash script.sh '$username'`;
Для получения переданных параметров в bash
сценарий (например, значение $username
переменная передала с методом выше):
#!/bin/bash
# ...
username=$1
# ...
Или просто ссылка $1
при необходимости, например:
#!/bin/bash
# ...
echo "$1"
# ...
Как следование моего собственного вопроса я уточню со своим опытом. Я заставил казнь Shell работать от PHP, но имел главные проблемы безопасности с решением. Это было ГЛАВНОЙ ошибкой от моей руки, что я не видел это вначале.
Для устранения угроз безопасности я сделал сценарий удара, который искал активированных пользователей в пользовательской таблице. Если бы пользователь был активен И не пользователь Linux затем, то пользователь должен быть создан на моем Linux, пользователь базы данных создается, субдомен создается, и ssh заблокирован для пользователя. Я настроил задание крона, работающее каждые 60 минут, и после пользовательского создания электронное письмо послано пользователю с информацией о регистрации
, Который устраняет много угроз безопасности (не все).
Bjarke