Запустите команду Drush из PHP-скрипта


Я пытаюсь создать сайт, на котором вы можете установить Drupal через веб-интерфейс.

<?php

`drush site-install --yes --db-url=mysql://USER:PASSWORD@localhost:3306/DATABASE --account-name=DRUPAL_USER --account-pass=DRUPAL_PASSWORD [email protected] --site-name=SiteName`;

?>

Выше приведен фрагмент из сценария. Если я запускаю скрипт из браузера, он ничего не делает, но если я попытаюсь запустить его как www-данные с помощью:

php install_script.php

Все работает отлично! Я получаю вывод Drush в терминале просто отлично.

Может ли кто-нибудь сказать мне, как запустить Drush для установки/настройки Drupal из PHP-скрипта? Я совершенно потерян и не могу понять, что я поступаешь неправильно.

Я буду признателен за любую помощь в этом! Спасибо.

Author: hhorn, 2012-02-27

4 answers

Кажется, я исправил это, сделав это с php:

<?php
exec('/usr/bin/php /var/www/drush/drush.php site-install --yes --db-url=mysql://USER:PASSWORD@localhost:3306/DATABASE --account-name=DRUPAL_USER --account-pass=DRUPAL_PASSWORD [email protected] --site-name=SiteName');
?>

Я в основном удалил пакет Drush pear и вручную установил Drush 5.0 в /var/www/drush.

 3
Author: hhorn, 2012-02-27 22:51:43

Как насчет функции php exec?. Т.е.:

<?php
  exec('drush site-install --yes --db-url=mysql://USER:PASSWORD@localhost:3306/DATABASE --account-name=DRUPAL_USER --account-pass=DRUPAL_PASSWORD [email protected] --site-name=SiteName');
?>
 2
Author: r0sk, 2012-02-27 11:54:01

Это легко могло быть проблемой с разрешениями. Когда вы вызываете страницу из браузера, она запускается пользователем веб-сервера (например, apache или www), но когда вы запускаете ее из командной строки, вы запускаете ее от своего имени.

  • Перечитывая это, я вижу, что вы запустили его из командной строки как www-данные, но ваша среда могла отличаться от веб-серверов. Запуск от имени www-данных с помощью su-www-данных является лучшим тестом, чем su www-данные.
 2
Author: Paul DeWolf, 2013-08-17 16:31:36

Я обнаружил (запустив рабочий стол Acquia Dev на OSX), что практически все, что мы считаем само собой разумеющимся в оболочке, было недоступно. Вот как я получил результат - при запуске в контексте rules.module php eval().

# When running from web, drush doesn't have any environment set up,
# has no search paths for site-aliases, and maybe can't even find PHP.
$php = "/Applications/acquia-drupal/php5_4/bin/php";
$drush_php = "/Users/dan/.composer/vendor/bin/drush.php";
$drush_options = " --config=/Users/dan/.drushrc.php ";
$command = "$php $drush_php $drush_options $site_alias status";
$result = exec($command, $output, $return);
drupal_set_message(print_r(array($command, $result, $output, $return), 1));

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

/Applications/acquia-drupal/php5_4/bin/php /Users/dan/.composer/vendor/bin/drush.php --config=/Users/dan/.drushrc.php @example.org.nz status
 1
Author: dman, 2015-03-18 12:36:56