2012-11-27 3 views
5

Ich bin nicht sicher, der richtige Name dafür, aber ich führe PHP-Code innerhalb eines Bash-Skript auf meinem Linux-Server. Ich habe zwei dieser Bash-Dateien und möchte in der Lage sein, eine GET-Variable von einer Datei zur nächsten zu übergeben.Übergabe der GET-Variable von einem Bash/PHP-Skript zu einem anderen

Hier ist eine vereinfachte Version der ersten Datei:

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

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

Hier ist eine vereinfachte Version der zweiten Datei ist:

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

echo $_GET['id']; 

Zur Zeit, als ich die erste Datei auf einem Crontab ausführen, ich erhalte eine Fehlermeldung, die besagt:

PHP Warning: require (bash2.sh?id=1): failed to open stream: No such Datei oder ein Verzeichnis in /home/bash/bash1.sh auf Leitung 2

Wenn ich die ?id=1 vom require() entfernen, führt sie ohne einen Fehler.

+0

Ich fürchte, das wird nicht funktionieren ... erfordern die Suche nach einem genauen Namen des Skripts, können Sie Variablen nicht übergeben, da es keine URL ist, ist es ein Pfad. Die einzigen Arten, die ich kenne, um Variablen zwischen Skripten zu übergeben, sind session_start() und header(), aber ich fürchte, dass diese ohne einen Webserver nicht funktionieren werden. – Naryl

Antwort

2

Sie denken web ... Was Sie in die setzen ist der eigentliche Dateiname der PHP-Engine wird nach mit dem Betriebssystem suchen. h. es sucht nach einer Datei namens bash2.sh?id=1, die Sie offensichtlich nicht haben.

Entweder rufen Sie ein anderes Skript von withing, sagen Sie mit system('./bash2.sh 2'); oder, und verwenden Sie die Methode unten, um Daten zu übergeben.

file1

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

file2

<?php 
echo $id; 

Wenn u verwenden das erste Beispiel (system('./bash2.sh 2');) Dann in bash2.sh finden Sie die Variable in der folgenden Art und Weise zuzugreifen:

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

Sollte '$ argv [1]' nicht 'argv [1]' sein – Chris

2

Sie können einen Parameter nicht zu einer statischen Datei auf Ihrer Festplatte hinzufügen. Sie können jedoch eine globale Variable definieren, auf die das erforderliche Skript zugreifen kann.

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

und für Ihre bash2.php:

<?php 
echo $id; 
0

versuchen, etwas wie folgt aus:

<?php 

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

?> 

Und dann in der Bash-Skript, werden Sie übergeben den ersten Parameter zugreifen können als $ 1.

More info here und here

hoffe, das hilft!

1

Kein Typ, Sie sollten Argumente verwenden. Wenn Sie PHP-Skript ausführen (ich vermute in Cron-Job), fügen Sie Argumente wie some.php variable1 variable2 .....usw.,

und dann in PHP erhalten Sie diese Variable mit $argv[0], $argv[1] .... etc.

Das ist der Weg von Bash-Skripten.

Verwandte Themen