I'm not certain, but from the sounds of the error message, I'd say that it relates to how OCIPLogon() works. OCIPLogon() attempts to reuse database connections which have already been established to the Oracle database. It appears that PHP believes the connection is still available for reuse to start a session, while Oracle believes the connection has been dropped.
This could potentially happen if the database was stopped and restarted without PHP knowing about it, or if a previous PHP script had caused the connection to be terminated abnormally on the Oracle database side.
To test the first option, write a PHP script to establish persistent connections (OCIPLogon()) to a test database and run a simple query like "SELECT TO_CHAR(SYSDATE, 'YYYY-MON-DD HH24:MI:SS');". Run this a few times, then have your Oracle DBA do a "SHUTDOWN IMMEDIATE" then a "STARTUP" on the test database. Now see if the script fails. Also try re-running this test using "SHUTDOWN ABORT". If these recreate the error, then either you need better uptime on your database, or will have to fall back to OCILogon(), or will have to tolerate occassional connection problems.
To get some real information about the error will probably require spending some money with Oracle. If you have paid for support, have your Oracle DBA check MetaLink for bug reports and to see if it has more detailed information than TechNet. If MetaLink doesn't turn up anything, try logging a TAR to get more information on the error.
-- Michael
Darkstreak - Computing & Innovations
www.darkstreak.com