Anmelden

View Full Version : Programm via PHP ausführen



DomGre
10-01-12, 16:39
Hallo

Ich muss via PHP ein Programm auf der iSeries ausführen Zend ist installiert nur bekomme ich immer den Fehler: NR:311 Msg: Program not found.

Doch das Programm ist vorhanden doch ich weiß leider nicht warum es nicht gefunden wird mein Code:



$opts = array(I5_OPTIONS_INITLIBL => "EFS" );

$conn = i5_connect("localhost", "user", "pw", $opts);
if (!$conn)
die("
Connection using \"localhost\" with USERID and PASSWORD failed. Error
number =".i5_errno()." msg=".i5_errormsg())."
";
else
echo "
Connection using \"localhost\" with USERID and PASSWORD OK!
\n";



//$this->log("Archiv " . $archivId . " DocId " . $docId . " Path: " . $outputPath);

//system("EFS/EXPSTMF ARCID($archivId) DOCID($docId) TODIR('$outputPath')", $success);

//exec("call efscse/cse318");

$description = array (
array ("Name"=>"arcid", "IO"=>I5_IN, "Type"=>I5_TYPE_CHAR, "Length"=>8),
array ("Name"=>"docid", "IO"=>I5_IN, "Type"=>I5_TYPE_CHAR, "Length"=>8),
array ("Name"=>"todir", "IO"=>I5_IN, "Type"=>I5_TYPE_CHAR, "Length"=>63)
);

$input = array(
"arcid" => "INTASI",
"docid" => "D00AAA17",
"todir" => "/www/zendsvr/test",
);
$Output = array();

$testprog = i5_program_prepare("EFS/EXPSTMF" , $description);
//$testprog = i5_program_prepare("EXPSTMF ARCID($archivId) DOCID($docId) TODIR('$outputPath')");

echo var_dump($input);
if (!$testprog) {
echo "i5_program_prepare";
exit();
}
else
{
echo "Preparing erfolgreich...". $testprog ." " ;
echo "
rtvneta command failed. errno=".i5_errno()."
msg=".i5_errormsg();
}

$ret = i5_program_call($testprog, $input);
Ich hoffe es kann mir jemand helfen.

MR-BN
11-01-12, 15:07
$conn_resource = i5_connect ('127.0.0.1', $user2, $pass2);vielleicht sollte die CONNECTION so aussehen. Nicht die Konstante USER oder PASS übertragen, sondern den Inhalt. ob *LOCALHOST oder '127.0.0.1' ist dasselbe.

DomGre
13-01-12, 12:03
Hallo

Danke für die Antwort ich habe es ausprobiert leider ohne Erfolg.
Aber das hatte ich mir schon gedacht weil es ja eig keinen Unterschied machen dürfte.
Hat noch jemand eine Idee?

Fuerchau
13-01-12, 14:45
Ggf. ein Berechtigungsproblem?
Vielleicht kann dein User nicht auf die Lib oder das Programm zugreifen, überprüf das doch mal.

DomGre
13-01-12, 15:29
Danke für die Antwort

In der Konsole kann ich jedoch auf den Befehl zugreifen.
Ich habe es in meinem Programm jetzt mit allen möglichen Parametern versucht wie QSYS/EFS/EXPSTMF , EFS/EXPSTMF und EXPSTMF.

Ich weiß mir leider nicht mehr zu helfen...

PS: ich habe mich auf der Konsole mit dem selben User wie bei meinem Script eingeloggt.

Pikachu
13-01-12, 15:43
In der Konsole kann ich jedoch auf den Befehl zugreifen.
Ich habe es in meinem Programm jetzt mit allen möglichen Parametern versucht wie QSYS/EFS/EXPSTMF , EFS/EXPSTMF und EXPSTMF.
"Befehl" oder "Programm"?

Funktioniert denn ein CALL EFS/EXPSTMF von der Konsole aus?

MR-BN
13-01-12, 16:55
Der Unterschied liegt darain, das Du mit der Konstanten "USER" abfragst. Gibt es bei Dir einen User = USER mit dem Passwort "PW". in meinem Beispiel wird dieser Wert in einer Variablen übergeben.
Wenn Du die Programm über die Konsole oder sonstwie testet, dann bis Du doch schon als USER angemeldet und definitert mit Deinen Rechten.