Re: PHP sockets enabled but socket_create() gives an error call to undefined function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Nov 2, 2010, at 2:50 PM, Suyash R wrote:

> My admin disagrees and I have questions too.
> 
> The phpinfo() fuction displays that sockets have been enabled. If
> extension=sockets.so is an alternate way to enable sockets, then why should
> this be done twice?
> 
> Suyash Ramineni
> On Mon, Nov 1, 2010 at 2:35 PM, Nicholas Kell <nick@xxxxxxxxxxxxxxxx> wrote:
> 
>> 
>> On Nov 1, 2010, at 1:12 PM, Suyash R wrote:
>> 
>>> No, sockets.so in not included in any of the machines php.ini file.
>> However, I found that Linux machine's php.ini doesn't include sockets.so and
>> sockets work fine on it but don't work on the Solaris machine.
>>> 
>>> Is it required to be included only in Solaris?
>>> 
>>> On Mon, Nov 1, 2010 at 1:41 PM, Nicholas Kell <nick@xxxxxxxxxxxxxxxx>
>> wrote:
>>> 
>>> On Nov 1, 2010, at 12:08 PM, crrrrrrr errrrrrr wrote:
>>> 
>>>> Yes, the http ( Apache user) has rl ( read permission) on the php file
>> with
>>>> sockets code in it. I think write access is unnecessary for Apache
>> user.
>>>> 
>>>> On Mon, Nov 1, 2010 at 12:50 PM, Nicholas Kell <nick@xxxxxxxxxxxxxxxx
>>> wrote:
>>>> 
>>>>> 
>>>>> On Nov 1, 2010, at 11:44 AM, crrrrrrr errrrrrr wrote:
>>>>> 
>>>>>> Yes, the phpinfo() shows that sockets are enabled in both machines.
>>>>>> On Mon, Nov 1, 2010 at 12:43 PM, Bastien Koert <phpster@xxxxxxxxx>
>>>>> wrote:
>>>>>> 
>>>>>>> On Mon, Nov 1, 2010 at 12:40 PM, crrrrrrr errrrrrr <
>> r.suyash@xxxxxxxxx>
>>>>>>> wrote:
>>>>>>>> Hello,
>>>>>>>> 
>>>>>>>> I was trying to create a socket connection from a Solaris machine
>> to a
>>>>>>> Red
>>>>>>>> Hat machine  to get the PATH in Red Hat machine remotely on Solaris
>>>>>>> machine
>>>>>>>> and display it to the user.
>>>>>>>> 
>>>>>>>> We have a PHP 5.1.6 installation on a Linux server (Apache) and PHP
>>>>>>> 5.2.6.
>>>>>>>> on a Unix(Solaris) server(Apache) . The PHP version on Solaris is
>>>>>>> compiled
>>>>>>>> with --enable sockets and phpinfo() displays that the sockets are
>>>>>>> enabled.
>>>>>>>> In spite of this we get the following error when using this piece
>> of
>>>>> code
>>>>>>>> from the Solaris machine.
>>>>>>>> 
>>>>>>>> 
>>>>>>>> The error:
>>>>>>>> 
>>>>>>>> PHP Fatal error:  Call to undefined function socket_create() in
>> /XXX/
>>>>>>>> 5server.php<
>>>>>>> http://cad.njit.edu/u/d/x/dx8/public_html/clunk/swsearch5server.php
>>> 
>>>>>>>> on
>>>>>>>> line 21
>>>>>>>> 
>>>>>>>> The code;
>>>>>>>> 
>>>>>>>> <?php
>>>>>>>> 
>>>>>>>> set_time_limit(0);
>>>>>>>> 
>>>>>>>> //ip of the server
>>>>>>>> $addr = 'xxx.xxx.xxx.xxx';
>>>>>>>> 
>>>>>>>> //port of the server
>>>>>>>> $port = 2xxx;
>>>>>>>> 
>>>>>>>> //create a socket
>>>>>>>> $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);  /* This is
>> line
>>>>> no
>>>>>>> 21
>>>>>>>> in the code. i have ommitted a few header comments */
>>>>>>>> 
>>>>>>>> //bind this socket with the above ip and port
>>>>>>>> $ret = socket_bind($sock, $addr, $port);
>>>>>>>> 
>>>>>>>> do {
>>>>>>>> $ret = socket_listen($sock, 10);
>>>>>>>> $msgSock = socket_accept($sock);
>>>>>>>> $buf = socket_read($msgSock, 1024);
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Please let me know if you need any further details I might have
>> missed.
>>>>>>>> 
>>>>>>>> Thank you.
>>>>>>>> 
>>>>>>>> Suyash Ramineni
>>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> check phpinfo() to see if the sockets have been activated in the ini
>>>>> file.
>>>>>>> --
>>>>>>> 
>>>>>>> Bastien
>>>>>>> 
>>>>>>> Cat, the other other white meat
>>>>>>> 
>>>>> 
>>>>> 
>>>>> I think that I messed up sending my last email, I apologize.
>>>>> 
>>>>> Is the user that Apache is running under configured for the proper
>> read
>>>>> write access to the socket file?
>>>>> 
>>>>> 
>>>>> --
>>>>> PHP General Mailing List (http://www.php.net/)
>>>>> To unsubscribe, visit: http://www.php.net/unsub.php
>>>>> 
>>>>> 
>>> 
>>> Oops, included in php.ini, not the Apache config.
>>> 
>>> 
>>> --
>>> PHP General Mailing List (http://www.php.net/)
>>> To unsubscribe, visit: http://www.php.net/unsub.php
>>> 
>>> 
>> 
>> 
>> Since you complied with --enable-sockets, you shouldn't even need
>> sockets.so to be dynamically loaded. But at this point, it is something that
>> I would try anyway.
>> 
>> Add:
>> 
>> extension=sockets.so
>> 
>> in your php.ini file just to see if it brings the function to light.
>> 
>> Your Linux installs I am sure were compiled with it in it. Especially if it
>> is a dist package.
>> 
>> The absence of the function is telling me that PHP is not compiled with
>> --enable-sockets. If it was compiled in properly, you would be getting
>> different errors. I am not saying that you didn't do it. Something may have
>> happened in the process.
>> 
>> By adding the sockets.so, you are adding the extension dynamically, incase
>> you were mistaken by the compile or incase there was some sort of anomaly
>> that the rest of PHP compiled but the sockets section was botched. Solaris
>> is (I guess) known to be lacking when it comes to C compilers (at least
>> according to the Unix geeks that I sit next to at work). But it seems to me
>> that it would all have failed or it would have all worked.

So did you try it?

http://bytes.com/topic/php/answers/483538-php-undefined-functon-socket_create



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux