Bonjour,

J'ai un petit code qui marche avec PHP en CGI sous Apache mais pas en mode module ...

Selon le driver utilisé, j'ai 52 ou 0 octet de stockée dans la base.
Si je suis en mode CGI j'ai bien l'image en entier....

Problème de configuration ?

Si quelqu'un a une idée ....

Merci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 
<?php
   /**
   CREATE TABLE TESTERIC.UPLOAD(
   FICHIER  VARCHAR2(50),
   CONTENT  BLOB)
   */
   /**
   * Test d'upload dans une table oracle via ODBC et PHP en module
   */
      $conf['DB_dsn'] = 'DRIVER=ORACLE ODBC DRIVER;DBQ=BDDEV8I2;SERVER=BDDEV8I2;';
//      $conf['DB_dsn'] = 'DRIVER={Microsoft ODBC for Oracle};SERVER=BDDEV8I2;';
      $conf['DB_user'] = 'TESTERIC';
      $conf['DB_pwd'] = 'TESTERIC';
      $file = 'D:\DocumentsEric\Mes images\JamesDean.jpg';
      $fsize = filesize($file)+10;  //le +10 des fois que... mais sert a rien
      ini_set('odbc.defaultlrl',$fsize);  //sert à rien
      ini_set('odbc.defaultbinmode',ODBC_BINMODE_PASSTHRU); //sert à rien
      //$file = 'D:\DocumentsEric\lorem.txt';
 
      //utilisation des fonctions direct ODBC
      $db = odbc_connect($conf['DB_dsn'],$conf['DB_user'],$conf['DB_pwd']);
      if($db===false){
         die("ERREUR : odbc_connect<br/>\n");
      }
//      odbc_autocommit($db,false);//begintrans
 
      $f = date('d/m/Y H:i:s');
      $sql = 'INSERT INTO UPLOAD (FICHIER) VALUES(\''.$f.'\')';
      echo "$sql<br />";
      $rs = odbc_exec($db, $sql);
      if($rs===false){
         $error = 'INSERT :'."\n";
         echo "$error<br/>\n";
      }else{
         $i = odbc_num_rows($rs);
         echo "INSERT : ".$i." lignes affectée<br/>\n";
      }
      echo odbc_errormsg($db)."</br>\n";
 
      //prepare
      $sql = "UPDATE UPLOAD SET CONTENT = ? WHERE FICHIER = '$f' ";
      echo "$sql<br />";
      $prep_id = odbc_prepare($db, $sql);
      echo odbc_errormsg($db)."</br>\n";
      if(!$prep_id) echo "PREPARE: erreur<br/>\n";
      echo odbc_errormsg($db)."</br>\n";
 
      odbc_execute($prep_id,array("'".$file."'"));
      echo odbc_errormsg($db)."</br>\n";
      if(!$rs){
         $error = 'UPDATE: erreur $rs='.print_r($rs,true)."\n";
         echo "$error<br/>\n";
         echo odbc_errormsg($db)."</br>\n";
      }else{
         echo "UPDATE: ok<br/>\n";
         echo odbc_errormsg($db)."</br>\n";
      }
      odbc_close($db);
 
      //commit
//      if(!odbc_commit($db)) echo "COMMIT: erreur</br/>\n";
?>