Запустите команду Drush из скрипта PHP - PullRequest
5 голосов
/ 27 февраля 2012

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

<?php

`drush site-install --yes --db-url=mysql://USER:PASSWORD@localhost:3306/DATABASE --account-name=DRUPAL_USER --account-pass=DRUPAL_PASSWORD --account-mail=contact@email.com --site-name=SiteName`;

?>

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

php install_script.php

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

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

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

Ответы [ 4 ]

3 голосов
/ 28 февраля 2012

Я, кажется, исправил это, сделав это с 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 --account-mail=contact@email.com --site-name=SiteName');
?>

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

2 голосов
/ 17 августа 2013

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

  • Перечитывание этогоЯ вижу, вы запускали его из командной строки как www-data, но ваша среда могла отличаться от веб-серверов.Запуск в качестве www-данных с помощью su - www-data - лучший тест, чем su www-data.
2 голосов
/ 27 февраля 2012

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

<?php
  exec('drush site-install --yes --db-url=mysql://USER:PASSWORD@localhost:3306/DATABASE --account-name=DRUPAL_USER --account-pass=DRUPAL_PASSWORD --account-mail=contact@email.com --site-name=SiteName');
?>
1 голос
/ 18 марта 2015

Я обнаружил (работает Acquia Dev Desktop на 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
...