php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #68750 PDOMysql with mysqlnd does not allow the usage of named pipes
Submitted: 2015-01-05 15:54 UTC Modified: 2015-01-15 17:32 UTC
From: steffen at howarts dot info Assigned: ab (profile)
Status: Closed Package: PDO MySQL
PHP Version: 5.6.4 OS: Windows 8.1 6.3.9600
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: steffen at howarts dot info
New email:
PHP Version: OS:

 

 [2015-01-05 15:54 UTC] steffen at howarts dot info
Description:
------------
Mysql Server configured so that you can't use the default socket:
[mysqld]
skip-networking
socket=abcdef

Connecting like isn't possible:

//this is the way it works with libmysql (with patch):
new PDO("mysql:host=.;unix_socket=abcdef") 

//this is the way how it works with mysqlnd (with patch):
//This seems to be very slow (5000ms without networking, while
//libmysql results in 20ms - which is probably a different bug)
new PDO("mysql:host=.;unix_socket=\\\\.\\pipe\\abcdef")

TLDR: The bug is that PDO mysql only checks 
for the unix-specific case of 127.0.0.1
while mysqlnd expects an explicit . for windows named pipes.


Patches

PDO_MYSQLWin32-001.patch (last revision 2015-01-05 15:55 UTC by steffen at howarts dot info)

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2015-01-12 11:55 UTC] ab@php.net
-Status: Open +Status: Feedback
 [2015-01-12 11:55 UTC] ab@php.net
Hi,

thanks for the patch. For the functionality it looks plausible, but I think using the "unix_socket" to pass a pipe is misleading. This should be called accordingly like "pipe" and only be available on Windows. But with such a change it'd probably aim master.

Thanks.
 [2015-01-12 12:26 UTC] steffen at howarts dot info
-Status: Feedback +Status: Open
 [2015-01-12 12:26 UTC] steffen at howarts dot info
It not really is when the mysqlnd driver is expecting it as such:
The variable in mysqlnd.c is explicitly named: "socket_or_pipe"

The whole mysql source tree shows this pattern as using the unix_socket as named pipe under windows.
 [2015-01-15 15:49 UTC] ab@php.net
Yes, internally. But i'm talking about how it's represented to outside, IMHO should be like

new PDO("mysql:host=.;named_pipe=\\\\.\\pipe\\abcdef")

But agreed, better to fix it now as is and maybe rename in master then. I'm going to apply your patch then.

Thanks.
 [2015-01-15 17:32 UTC] ab@php.net
-Status: Open +Status: Closed -Assigned To: +Assigned To: ab
 [2015-01-15 17:32 UTC] ab@php.net
Applied in 7c9633412e1598495dfe547071a2a1481bfc052b.

Thanks.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Dec 03 18:01:30 2024 UTC