2012-02-27 3 views
5

Sto provando a creare un sito in cui è possibile installare Drupal tramite una GUI Web.Esegui comando Drush da uno script 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`; 

?> 

Quanto sopra è uno snippet della sceneggiatura. Se faccio funzionare lo scritto dal browser che non fa nulla, ma se provo a farlo funzionare come www-data con:

php install_script.php 

tutto funziona perfettamente! Ottengo l'output di Drush nel terminale bene.

Qualcuno può dirmi come attivare Drush per eseguire l'installazione/installazione di Drupal da uno script PHP? Sono completamente perso e non riesco a vedere cosa sto facendo male.

Apprezzerò qualsiasi aiuto su questo! Grazie.

risposta

3

ho sembrano aver risolto in questo modo da 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'); 
?> 

ho praticamente rimosso il pacchetto PEAR Drush e installato manualmente Drush 5.0 in/var/www/Drush.

2

Che dire della funzione php exec ?. Cioè .:

<?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

Sfortunatamente non cambia nulla. Se lo metto invece nel mio script ed eseguirlo dal browser non ottengo alcun risultato. Se lo eseguo come www-data con php install_script.php funziona perfettamente. – hhorn

+0

Forse php-cli (php install_script.php) e l'esecuzione del browser (http: //localhost/whatever/install_script.php) avevano ambienti distinti, vars e così via. Provalo con il percorso completo di drush (/ usr/local/bin/drush ...). – r0sk

+0

Buona ipotesi, ma mi dà ancora lo stesso risultato. – hhorn

2

Questo potrebbe facilmente essere stato un problema di autorizzazioni. Quando invochi una pagina da un browser, viene eseguita dall'utente del server web (ad esempio apache o www), ma quando esegui dalla riga di comando lo stai eseguendo come se stessi.

  • Rileggendo ciò, vedo che l'hai eseguito dalla riga di comando come www-data, ma il tuo ambiente potrebbe essere diverso dai server web. Esecuzione come www-data eseguendo su-www-data è un test migliore di su www-data.
1

Ho trovato (eseguendo Acquia Dev Desktop su OSX) che praticamente tutto ciò che diamo per scontato nella shell non era disponibile. Ecco come ho ottenuto un risultato - durante l'esecuzione in un contesto di 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)); 

Ovviamente, regolare i percorsi come appropriato. Il comando completo è stato il seguente:

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