ID: 12077
User updated by: [EMAIL PROTECTED]
Old Summary: php.exe application error - cannot 'read' memory address
Old Status: Open
Status: Closed
Bug Type: OCI8 related
Operating System: windows 2000
PHP Version: 4.0.6
New Comment:

well - i appear to have found the problem.

in the php.ini file, there are 2 oracle extensions.
extension=php_oci8.dll and extension=php_oracle.dll.

i had both of these extensions loaded, and they must have been conflicting. because 
when i commented out the oracle.dll extension, restarted IIS5 and re-ran the scirpt, 
it worked fine without causing the error to appear.

Previous Comments:

[2001-07-12 00:06:49] [EMAIL PROTECTED]

i'm using php 4.0.6 through IIS5 on a windows 2000 workstation.

this is similar to bug #11202, except it occured to me while i was using oci8 as 
apposed to MS SQL (which worked fine for me).

my exact error is 'php.exe - application error:
the instruction at "0x77f83a33" referenced memory at'
"0x00000010". The memory could not be "read".

when i click "OK" to terminate the program, the script seems to complete it's 
execution as i want, just with the painful error showing.
if i click on "CANCEL", it's like it's in an endless loop.
btw - i'm trying to connect to an 8i 8.1.6 database.

so i'm not really sure if it's an oci8 problem or whether it's an IIS5 or windows 2000 

here is a sample script which i am using.

<title>Default php load file.</title>

  // test for MS SQL server. This part works without errors.
  // Create new connection.
  $mssql_conn = new Connection($database_name, $database_type, $server_name, 
"webuser", "webuser");

  //test connection with a simple SELECT call.
  $SQL = "SELECT * from role_type ";
  $result = $mssql_conn->exec($SQL);
  echo $result;
  echo "<br>";
  echo mssql_num_rows($result);
  echo "<br>";
  echo "<br>";

  // Test for oracle database..
  // This part produces the error.
  $ora_conn = new connection("PS_PLATO", "ORA", "PLATO", "psadmin", "d3g3sh");
  $SQL = "SELECT * from advert ";
  $result4 = $ora_conn->exec($SQL);
  echo "result of exec statement " . $result4;
  echo "<br>";
  echo ocinumcols($ora_conn->stmt);
  echo "<br>";
  echo "<br>";

this is the classes.php include file.

  class Connection
    // Variables
    var $connect_to;
    var $server;
    var $database;
    var $db;
    var $stmt;

    // Constructor
    function Connection($database_name, $database_type, $server_name = "", $username = 
"", $password = "", $port="")
      if ($database_name != "" && $database_type != "")
        $this->connect_to = $database_type;
        $this->server = $server_name;
        $this->database = $database_name;

        switch ($database_type) {
          case "MSSQL":
                $this->db = mssql_connect($server_name, $username, $password);
                if ($this->db <> false) 
                  $done = mssql_select_db($database_name, $this->db);
          case "ORA":
                $this->db = ocilogon($username, $password, $database_name);
          case "ODBC":  
                $this->db = odbc_connect($database_name, $username, $password);
          case "PGSQL":
                $this->db = pg_Connect("host=$server_name port=$port 
dbname=$database_name user=$username");
                echo "<font face=tahoma>Invalid or Unsupported database 
      } else {
        echo "<font face=tahoma>Information missing in connection string.</font><br>";

    // Functions
    function exec($SQL)
    // for the DML calls to databases.
    {   echo $this->connect_to;
        echo "<bR>";

        switch ($this->connect_to) {
          case "MSSQL":         return mssql_query($SQL, $this->db);    break;
          case "ODBC":          return odbc_exec($this->db, $SQL);      break;
          case "PGSQL":         return pg_exec($this->db, $SQL);        break;
          case "ORA":           $this->stmt = ociparse($this->db, $SQL);
                                return ociexecute($this->stmt);         break;
                echo "<font face=tahoma>Invalid or Unsupported database 

this is meant to be a basic database wrapper - you pass in a database type, name, 
server name, username, password and a port number(for those dbases that need it), and 
it opens a valid connection to that dbase. then you can perform standard commands like 
the execution of an sql statements and the standard php-database funcitons like 
num_rows etc.

refreshing the pages does little more than represent the error to the screen.


ATTENTION! Do NOT reply to this email!
To reply, use the web interface found at

PHP Development Mailing List <>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to