2012-02-27 3 views
5

Próbuję zbudować witrynę, w której można zainstalować Drupala za pośrednictwem web gui.Polecenie Run Drush ze skryptu PHP

<?php 

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

?> 

Powyższe jest fragmentem ze skryptu. Jeśli uruchomić skrypt z przeglądarki to nic nie robi, ale gdy próbuję uruchomić go jak www-data z:

php install_script.php 

Wszystko działa doskonale! Dostaję wydruki Drusha na terminalu.

Czy ktoś może mi powiedzieć, jak wywołać Drush, aby wykonać instalację/konfigurację Drupala ze skryptu PHP? Jestem całkowicie zagubiony i nie widzę, co robię źle.

Doceniam każdą pomoc w tej sprawie! Dzięki.

Odpowiedz

3

ja wydaje się naprawić go w ten sposób od php:

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

I w zasadzie usunięty pakiet gruszka Drush i ręcznie zainstalować Drush 5,0 w/var/www/drush.

2

Co z funkcją php exec ?. Tj .:

<?php 
    exec('drush site-install --yes --db-url=mysql://USER:[email protected]:3306/DATABASE --account-name=DRUPAL_USER --account-pass=DRUPAL_PASSWORD [email protected] --site-name=SiteName'); 
?> 
+0

Niestety nic nie zmienia. Jeśli wstawię to do mojego skryptu i uruchomię go z przeglądarki, nie otrzymam wyniku. Jeśli uruchomię go jako www-data za pomocą php install_script.php, to działa dobrze. – hhorn

+0

Może php-cli (php install_script.php) i wykonanie przeglądarki (http: //localhost/whatever/install_script.php) mają różne środowiska, vars i tak. Wypróbuj go z pełną ścieżką drush (/ usr/local/bin/drush ...). – r0sk

+0

Dobrze zgaduję, ale nadal daje mi to taki sam wynik. – hhorn

2

To może być problem z uprawnieniami. Kiedy wywołujesz stronę z przeglądarki, jest ona uruchamiana przez użytkownika serwera WWW (np. Apache lub www), ale kiedy uruchamiasz się z wiersza poleceń, uruchamiasz go jak siebie samego.

  • Po ponownym uruchomieniu widzę, że uruchomiłeś go z wiersza poleceń jako dane www, ale Twoje środowisko mogło być inne niż na serwerach sieci Web. Uruchomienie jako danych www przez uruchomienie su - www-data jest lepszym testem niż dane su www.
1

Znalazłem (uruchamiając Acquia Dev Desktop na OSX), że prawie wszystko, co przyjmujemy za pewnik w powłoce, było niedostępne. Oto, w jaki sposób uzyskałem wynik - podczas działania w kontekście 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)); 

Oczywiście dostosuj odpowiednio ścieżki. Pełna komenda zakończyła się:

/Applications/acquia-drupal/php5_4/bin/php /Users/dan/.composer/vendor/bin/drush.php --config=/Users/dan/.drushrc.php @example.org.nz status