Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Message-ID: X-Originating-Email: [carmik AT hotmail DOT com] X-Sender: carmik AT hotmail DOT com From: "Carmik" To: Subject: Cygwin + Apache + Perl + sockets = Operation not permitted Date: Sat, 30 Apr 2005 23:18:12 +0300 MIME-Version: 1.0 Content-Type: text/plain; charset="windows-1255" Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 30 Apr 2005 20:18:40.0919 (UTC) FILETIME=[CCC18A70:01C54DC1] We have old testing environment based on these: Host: WinXP sp2 Filesystem: FAT32 Cygwin: 1.5.11 Apache: 1.3.29 mySQL: 4.1.8 I tried to upgrade it to- Host: WindowsXP sp2 Filesystem: FAT32 $ uname -srv CYGWIN_NT-5.1 1.5.16(0.128/4/2) 2005-04-25 20:26 $ /usr/sbin/httpd -v Server version: Apache/1.3.33 (Cygwin) Server built: Mar 5 2005 17:27:42 $ /usr/bin/perl -V:version version='5.8.6'; Perl additional packages installed using `cpan`: DBI, DBD:mysql, DBD:mysqlPP mySQL: mysql-4.1.11 (compiled from source) Unfortunately the very same perl-scripts that used to work on the old computer, fails now - The scripts uses DBI to connect to mySQL my dsn="..."; my $dbh= DBI->connect($dsn, 'mysqluser', 'password') ; if (! $dbh) { print "Error: " . DBI->errstr . "\n"; } Whatever DSN i tried i got error: for 'DBI:mysql:host=localhost;database=dbMyDB' error: Can't create UNIX socket (1) for 'DBI:mysql:host=127.0.0.1;database=dbMyDB'; error: Can't create TCP/IP socket (1) for 'DBI:mysqlPP:host=localhost;database=dbMyDB' error: Couldn't connect to localhost:3306/tcp: IO::Socket::INET: Bad protocol 'tcp' at /usr/lib/perl5/site_perl/5.8/DBD/mysqlPP.pm line 109 I can successfuly connect to the database using the mysql client from the bash prompt, either using UNIX socket or explicit socket (ip+port). My guess is that something relevant to sockets' creation in the perl DBI module fails, so i tried to test my hypothesis- I wrote a simple perl script that uses native sockets. When i run the perl-script from the bash promt it connect with no problem. but when same code is under the Apache all these methods fails- getprotobyname getservbyname socket (if i bypass the previous methods' failure using hardcoded values of 6 for TCP and explicit port). (Other method are not relevant if there is no socket) and the $! says for all of these methods - Operation not permitted I checked the following issues (just to make sure) - * localhost is defined in /etc/hosts 127.0.0.1 localhost * The /etc/group and /etc/passwd files are updates mkpasswd --local > /etc/passwd mkgroup --local > /etc/group * The Apache server run as an administrator and i added the following lines to the `httpd.conf` file - User myusername Group Administrators I don't mind this security risk since this server is used for testing purpose only (and is not connected to the internet anyway). * Microsoft firewall is disabled START firewall.cpl * I tried also running the Apache as a non-deamon process, but problem still exists - /usr/sbin/httpd -X * When i retrieve the UID, GID, EUID and EGID from withing the perl-script i get the correct ones (my IDs), so apparently the script is not running as the default restricted `nobody`. my $uid= POSIX::getuid(); ... I did some googling and i found many people with same errors, but i could not find a solution (yet?) What else can i try ? Any suggestions? thanks C1 -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/