solaris-ch
Goto Top

Keine Fehler und doch passiert nix...

Hallo zusammen
da kein Fehler angezeigt wird, weiss ich erhlich gesagt nicht, nach was ich suchen soll.
Vielleicht sieht jemand von euch, was ich falsch mache. Wäre echt nett!

Nun, ich habe da ein Script welches einerseits geht, andererseits nicht. Was heisst das? Solange ich das Script in der Konsole direkt durch den PHP Parser jage, funktioniert es.

Wenn ich das Script aber im Browser aufrufe, kommt nix. Nada, nüscht. Ich fing dann an, den Fehler einzukreisen indem ich nach jeder Zeile ein "die;" hingemacht habe. Damit kam ich bis und mit Zeile 15. Putenv machte er noch. Danach ist Ende... Aber wieso? Und wieso nur via Browser?

<?php

// inserting records into superduper teradata
echo "test";  
$tablename  = "teraschema.tblname";  
$filepath   = "/xxx/xxx/www/cps/csvfiles/xxx771xxxxxxx.csv";  
$file_array = file($filepath);
$query      = "";  
foreach($file_array as $line_number => $line){

        $query .= "insert into $tablename (COMPANY_REGISTERED_NAME,CUSTOMER_NAME,CUSTOMER_FIRST_NAME,ADDRESS,POSTALCODE,CITY,WAS_BY_CARRIER,CPS_OFF_DATE,CPS_OFF_CLI) ";  
        $query .= "VALUES (" . $line . ");\n";  
}
// connecting to teradata
putenv("ODBCINI=/data/xxx/.odbc.ini");  

//die; // bis hier laeuft das script

if($odbcc = odbc_connect("xxx","xxx","xxxx")){  
        echo "odbc connect ok";  
}else{
        $err = odbc_error();
        echo "odbc error: ". $err['text'] . "\r";  
}
if(!odbc_prepare($odbcc, $query)
|| !$odbc_exe = odbc_exec($odbcc, $query)){
        echo odbc_errormsg($odbc_exe);
}
// lets get the number of
// rows waiting with status 0

?>

Vielen Dank für eure Hilfe und Gruss aus der Schweiz

Content-ID: 119045

Url: https://administrator.de/contentid/119045

Ausgedruckt am: 15.11.2024 um 23:11 Uhr

RoterFruchtZwerg
RoterFruchtZwerg 25.06.2009 um 12:39:52 Uhr
Goto Top
und was genau passiert danach? springt er weder if noch else an? Bitte bissal genauer...

Ansonsten, denke nach was passiert. In der Konsole läuft das Skript eben nicht im Apache, wenn du die Website aufrufst vermutlich schon, vielleicht suchst du also apache_setenv()?
solaris-ch
solaris-ch 25.06.2009 um 13:03:39 Uhr
Goto Top
Zitat von @RoterFruchtZwerg:
vielleicht suchst du also apache_setenv()?

Hey, du bist mein Held! Es geht zwar noch nicht, aber wenigstens hast du mich genau auf die richtige Fährte gebracht!

Wenn ich das Script nun aufrufe, erscheint der Fehler:
Warning: odbc_connect() [function.odbc-connect]: SQL error: [DataDirect][ODBC lib] System information file not found. Please check the ODBCINI environment variable., SQL state IM002 in SQLConnect in /data/tom/www/cps/insertinto_tera.php on line 20
odbc error: I

Ich versuche jetzt mal unseren Admin dazu zu bringen die Umgebungsvariable direkt im Apache einzutragen. Das sollte dann mein Problem lösen. Was meinst du?

Besten Dank für den super Tip!
solaris-ch
solaris-ch 25.06.2009 um 13:41:48 Uhr
Goto Top
Hi nochmals face-wink

also. Das eintragen der Apache Variable half nicht viel...
Apache Environment Variable Value
ODBCINI /data/xxx/.odbc.ini

Trotzdem erscheint der Fehler:
Warning: odbc_connect() [function.odbc-connect]: SQL error: [DataDirect][ODBC lib] System information file not found. Please check the ODBCINI environment variable., SQL state IM002 in SQLConnect in /data/tom/www/cps/insertinto_tera.php on line 20

Jemand eine Idee?

Beste Grüsse
Supermax
Supermax 25.06.2009 um 21:26:17 Uhr
Goto Top
Ist die Datei für die UserID des Webservers (je nach Distribution "apache", "wwwrun", "www-data" oder auch "nobody") überhaupt lesbar?

Du kannst das leicht testen, indem du z.B. folgenden Code in dein Script einfügst.
if (!is_readable('/data/xxx/.odbc.ini')) {  
   echo "Datei nicht lesbar.";  
}

Eventuell blockiert auch ein Sicherheitsframework wie SELinux oder AppArmor den Zugriff auf diese Datei.
solaris-ch
solaris-ch 26.06.2009 um 08:28:48 Uhr
Goto Top
Hi Supermax.

Guter Hinweis. Aber die Datei ist lesbar.

Beste Grüsse!