2012-11-27 13 views
5

Non sono sicuro del nome corretto, ma sto eseguendo codice PHP all'interno di uno script Bash sul mio server Linux. Ho due di questi file Bash e voglio essere in grado di passare una variabile GET da un file all'altro.Passaggio di GET variabile da uno script Bash/PHP a un altro

Ecco una versione semplificata del primo file di:

#!/usr/bin/php -q 
<?php 

require("bash2.sh?id=1"); 

Ecco una versione semplificata del 2 ° del file:

#!/usr/bin/php -q 
<?php 

echo $_GET['id']; 

Attualmente, quando eseguo il primo file su un Crontab, ottengo un errore che dice:

PHP Warning: require (bash2.sh?id=1): failed to open stream: No such file o directory in /home/bash/bash1.sh on line 2

Se rimuovo il ?id=1 dalla require(), esegue senza un errore.

+0

Ho paura che questo non funzioni ... richiedono ricerche per un nome esatto dello script, non è possibile passare variabili perché non è un URL, è un percorso. L'unico modo in cui so di passare le variabili tra gli script sono session_start() e header(), ma temo che non funzionino senza un server web. – Naryl

risposta

2

You r thinking web ... Ciò che si inserisce nel require è il nome file effettivo che il motore PHP cercherà per utilizzando il sistema operativo. per esempio cerca un file chiamato bash2.sh?id=1 che ovviamente non hai.

O si chiama un altro script da withing, ad esempio con system('./bash2.sh 2'); Oppure, includere e utilizzare il metodo seguente per passare i dati.

file1

<?php 
$id = 1; 
require("bash2.sh"); 

file2

<?php 
echo $id; 

Se u utilizzare il primo esempio (system('./bash2.sh 2');) Poi, nel bash2.sh si accede alla variabile nel seguente modo:

<?php 
echo $argv[1]; //argv[0] is the script name 
+0

Dovrebbe essere '$ argv [1]' non 'argv [1]' – Chris

2

Non è possibile aggiungere un parametro a un file statico sul proprio disco rigido. Ma puoi definire una variabile globale che è accessibile dallo script reqired.

<?php 
$id=1 
require("bash2.php"); 

e per la vostra bash2.php:

<?php 
echo $id; 
0

provare qualcosa di simile:

<?php 

    $id = $_GET['id']; 
    exec("./bash2.sh $id"); 

?> 

E poi nello script bash sarete in grado di accedere al primo parametro passato come $ 1.

More info here e here

Spero che questo aiuti!

1

Nessun tizio dovresti usare gli argomenti. Quando esegui lo script php (sto indovinando in cron job), aggiungi argomenti come some.php variable1 variable2 .....ecc.,

e quindi in php si ottiene quel varibale con $argv[0], $argv[1] .... etc.

Questo è il modo da script di bash.

Problemi correlati