ID:               40758
 Updated by:       [EMAIL PROTECTED]
 Reported By:      jostb2345 at yahoo dot com
-Status:           Open
+Status:           Assigned
 Bug Type:         CGI related
 Operating System: Windows (all versions)
 PHP Version:      5.2.1
 Assigned To:      dmitry


Previous Comments:
------------------------------------------------------------------------

[2007-03-23 09:06:44] [EMAIL PROTECTED]

ok. I'll add socket support for win32, but I am not sure when I'll have
time for this work.

------------------------------------------------------------------------

[2007-03-13 16:29:28] jostb2345 at yahoo dot com

> May be older PHP versions were able to support sockets on win32, but
I
> have never seen any FastCGI plugin implmentation that passes
sockets.

PHPIntKitForWindows.zip

=> http://www.alphaworks.ibm.com/tech/phpintwasce/download


> Also I don't see any sockets advantages (only disadvantages).

I don't think named pipes work on all operating systems. Furthermore
Java supports only TCP socket communication (well, it is possible to
access Windows and Unix named pipes from Java. But one has to implement
it twice. RandomAccessFile on Windows, a pair of normal Files on Unix).


To be practical -- and for backward compatibility -- we need a working
TCP socket implementation on both operating systems. tcp sockets worked
in PHP versions < 5.2.0 and I don't see a good reason to drop this.


Regards,
Jost Boekemeier

------------------------------------------------------------------------

[2007-03-12 17:21:32] [EMAIL PROTECTED]

yes. PHP expects pipe but not a socket.

In C you may even try to pass window HANDLE :)

May be older PHP versions were able to support sockets on win32, but I
have never seen any FastCGI plugin implmentation that passes sockets.
Also I don't see any sockets advantages (only disadvantages).


------------------------------------------------------------------------

[2007-03-09 17:06:35] jostb2345 at yahoo dot com

> I don't understand for what reason some program passes stdout to
> PHP

Because I thought you need to distinguish sockets from named pipes.
I have attached code which crashes php since 5.2.0.


Regards,
Jost Boekemeier

------------------------------------------------------------------------

[2007-03-09 17:01:01] jostb2345 at yahoo dot de

# include <windows.h>
# include <winsock2.h>
# define close closesocket

term() {
  printf("err:%d", (GetLastError()));
  exit(1);
}

struct sockaddr_in saddr;
main() {
  SOCKET listen_handle;
  SOCKADDR_IN saServer;         
  char *cmd = "php-cgi.exe";
  STARTUPINFO su_info;
  SECURITY_ATTRIBUTES sa = { 0 };
  WORD wVersionRequested = MAKEWORD(1,1);
  WSADATA wsaData;
  int n = WSAStartup(wVersionRequested, &wsaData);
  if (wsaData.wVersion != wVersionRequested) term();

  listen_handle = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  
  saServer.sin_family = AF_INET;
  saServer.sin_addr.s_addr = INADDR_ANY;
  saServer.sin_port = htons(9667);

  n = bind(listen_handle, (LPSOCKADDR)&saServer, sizeof(struct
sockaddr));
  if (n == SOCKET_ERROR) term();

  n = listen(listen_handle, 20);
  if (n == SOCKET_ERROR) term();
  

  ZeroMemory(&su_info, sizeof(STARTUPINFO));
  su_info.cb = sizeof(STARTUPINFO);
  su_info.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
  su_info.wShowWindow = SW_HIDE;
  su_info.hStdInput = listen_handle;
  su_info.hStdError     = INVALID_HANDLE_VALUE;
  su_info.hStdOutput = INVALID_HANDLE_VALUE;
  SetHandleInformation(su_info.hStdInput, HANDLE_FLAG_INHERIT, TRUE);

  PROCESS_INFORMATION p;
  if(CreateProcess(NULL, cmd, NULL, NULL, 1, 0, NULL, NULL, &su_info,
&p)) {
    CloseHandle(p.hThread); closesocket(listen_handle);
  } else {
    term();
  }
  if( WaitForSingleObject(p.hProcess, INFINITE) == WAIT_FAILED ){
    term();
   }
  WSACleanup();
}

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/40758

-- 
Edit this bug report at http://bugs.php.net/?id=40758&edit=1

Reply via email to