php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #38923 ODBC works through command line but not Apache
Submitted: 2006-09-22 10:52 UTC Modified: 2007-08-01 01:00 UTC
Votes:6
Avg. Score:4.3 ± 1.1
Reproduced:4 of 4 (100.0%)
Same Version:1 (25.0%)
Same OS:2 (50.0%)
From: matthew dot berry at wolseley dot co dot uk Assigned:
Status: No Feedback Package: ODBC related
PHP Version: 5.1.6 OS: Unix
Private report: No CVE-ID: None
View Add Comment Developer Edit
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please — but make sure to vote on the bug!
Your email address:
MUST BE VALID
Solve the problem:
14 + 11 = ?
Subscribe to this entry?

 
 [2006-09-22 10:52 UTC] matthew dot berry at wolseley dot co dot uk
Description:
------------
We are using Unix, Apache version 2.0.54 and PHP 5.1.2 to connect to a database (Northgate Reality) using the Unix ODBC protocol and the Northgate Unix driver.

When we run the SQL statement shown below through ISQL on the web server, the expected results are returned.

When we run the PHP page directly on the command line using the PHP parser, we get the html generated correctly.

When going through Apache we get the following error:

Warning: odbc_do() [function.odbc-do]: SQL error: [Northgate][SNI] Transport Error : Receive Failure, SQL state 08S01 in SQLExecDirect in /sites/intranet/wuk/TermsReview/connecttest3.php on line 62

Which is a generic error message.

Part of the code used is shown below:


Reproduce code:
---------------
	$rfp = odbc_connect($rdsn,$ruser,$rpwd);
	if($rfp){
	   echo "Connected to ".$rdsn."<br>";
	   $select = "SELECT ACCOUNT_NO, CUSTOMER_NAME FROM GLOBAL_CUSTOMER_DETAILS WHERE ACCOUNT_NO = '7459C30'";
	   echo $select."<br>";
	   $result = ODBC_DO($rfp,$select);
	
etc etc

Expected result:
----------------
The message is produced when it hits the ODBC_DO statement, the connection to the database succeeds and has been traced.

I have tried several things such as using a persistant connection, using odbc_prepare before it (which also fails).

When I include phpinfo at the end it shows that there is an active odbc connection.

I realise that his could be a driver issue (although tracing has shown otherwise thus far). But the fact that running the exact same page from the command line works but doesn't through Apache means something ain't quite right.



Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2006-09-22 15:57 UTC] kalowsky@php.net
The warning you're seeing (08S01) is telling you that something happened with the connection and it was lost.  Check your timeouts and query length to ensure that neither of these is killing the connection.
 [2006-09-25 08:06 UTC] matthew dot berry at wolseley dot co dot uk
Settings for Apache are

Timeout 60

KeepAlive On

MaxKeepAliveRequests 200

KeepAliveTimeout 15

StartServers        40
ThreadLimit         75
MinSpareThreads     32
MaxSpareThreads     64
MaxClients         300
ThreadsPerChild     75
MaxRequestsPerChild  10000


Php.ini are:

max_execution_time = 30     ; Maximum execution time of each script, in seconds
max_input_time = 60     ; Maximum amount of time each script may spend parsing request data
memory_limit = 8M      ; Maximum amount of memory a script may consume (8MB)

As stated earlier, the command line returns back and displays row data in under 2 seconds, but when running through the Apache server, the code fails to execute. What would cause this difference?
 [2006-09-26 10:31 UTC] matthew dot berry at wolseley dot co dot uk
Thought I should just mention that there is no delay in processing the page through apache. The page is returned within a couple of seconds (roughly the same length of time taken via cli), almost as if the connection is dropped immediately (which is not the case as phpinfo still shows one active connection in odbc at the end of the page). This is a very irritating problem as we are so desperately close to resolving this issue.
 [2007-08-01 01:00 UTC] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
 [2008-03-05 16:35 UTC] vitner at gmail dot com
This problem also occurs under Windows XP Professional with PHP version 5.2.3 and Apache version 2.2.4.  The DSN references a SQL Server database on a remote machine, and the PHP program works from the command line but reports an error in the connection when executing through Apache.  The following will generate the message "Error in connection" when viewed as a web page.

<html>
<body>
<?php 
   $dsn = "myDSN";
   $user = "username";
   $upasswd = "password";

   $conn = odbc_connect($dsn, $user, $upasswd);
   echo  "Connecting to database '$dsn'...<BR>";
   if  (!$conn)
   {   echo  "Error in  connection<BR>";
       exit;
   }
?>
</body>
</html>
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Mar 28 12:01:27 2024 UTC