![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Гость_Дмитрий |
|
|||
|
Unregistered |
запускаю файлик php.exe *.php, и вижу следующую херь : Fatal error : Call to undefined function : socket_create далее пишет где это в файле.
В чем проблема???? |
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 1 Всего: 6 |
А подробнее? Код в студию...
Может ошибка в задаваемых параметрах? (что скорее всего -------------------- |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
#!/usr/local/bin/php
<? $windows = 1; // хУФБОПЧЙФШ ЬФХ РЕТЕНЕООХА ТБЧОПК 1 ЕУМЙ ЪБРХУЛБЕФЕ РПД Windows if($windows == 1) { include ("workaround.php"); } $max_retries = 3; $debug = 1; $sender = ""; // sender e-mail address (may be empty) $recipient = "[email protected]"; // recipient e-mail address $email_subject = "Simple subject"; // e-mail subject $email_text = "Hello! Pleased to see you! Really!"; // e-mail text function error($a) { if(substr($a, 0, 1) == '2') return 0; if(substr($a, 0, 1) == '3') return 0; echo "SMTP error: ".substr($a, 4); return 1; } function s_write($socket, $what) { global $debug; if($debug) echo $what; socket_write($socket, $what); } function s_read($socket) { global $debug; $a = socket_read($socket, 1024); if($debug) echo $a; if(error($a)) return 0; return 1; } // Getting mail exchange servers for domain $nd = split('@', $recipient); if(!getmxrr($nd[1], $mxs)) { $mxs[0] = $nd[1]; }; // create and open socket $retries = 0; $mx = 0; $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); ВОТ ТУТ ЭТА ЕБ....АЯ ОШИБКА [u] socket_set_block($sock); socket_set_option($sock, SOL_SOCKET, SO_SNDTIMEO, array("sec"=>1, "usec"=>0)); while(1) { $domain = $mxs[$mx]; if($debug) echo "Using MX: ".$domain."\n"; if(@socket_connect($sock, $domain, 25)) { // SMTP commands (rfc's 821, 2821, 2822, 2920, 3030) s_write($sock, "HELO me\n"); if(!s_read($sock)) break; s_write($sock, "MAIL FROM: <".$sender.">\r\n"); if(!s_read($sock)) break; s_write($sock, "RCPT TO: <".$recipient.">\r\n"); if(!s_read($sock)) break; s_write($sock, "DATA\r\n"); if(!s_read($sock)) break; s_write($sock, "From: <".$sender.">\r\n". "Subject: ".$email_subject."\r\n". "To: ".$recipient."\r\n\r\n". $email_text."\r\n.\r\n"); if(!s_read($sock)) break; s_write($sock, "QUIT\r\n"); if(!s_read($sock)) break; echo "Message successfully sent!\n"; exit(0); } else { // We failed to connect to this MX! Let's try next... $mx++; if($mx >= count($mxs)) exit(1); echo "Error connecting socket!\n"; } // Some error occured while SMTP dialogue - retry for $max_retry times echo "Retrying...\n"; $retries ++; if($retries > $max_retries){ // All retries failed too. OK, let's try another MX $mx++; if($mx >= count($mxs)) exit(1); $retries = 0; } } echo "Mail sending failed!\n"; ?> |
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 1 Всего: 6 |
Э... а на что ругается?
ошибку запости сюда... у себя проверил - ошибок не выдает. Дескриптор сокета создает. И опции задаются тоже безболезненно... -------------------- |
|||
|
||||
| Гость_Дмитрий |
|
|||
|
Unregistered |
Fatal error : Call to undefined function : socket_create,
как ты запускал и какие настройки нужны?? |
|||
|
||||
| skalex |
|
|||
|
Хороший человек ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 895 Регистрация: 2.4.2004 Репутация: 8 Всего: 23 |
На мой взгляд, ошибка очевидна.
1. Какая у Вас версия php? 2. Попробуйте использовать функцию: socket(). |
|||
|
||||
| Гость_дмитрий |
|
|||
|
Unregistered |
4.3.9 -версия ПХП.
куда функцию засунуть и что она меняет??? Кстати это не только у вас она запускается, у знакомого тоже. Может необходимо наличие апача или MySql |
|||
|
||||
| skalex |
|
||||||
|
Хороший человек ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 895 Регистрация: 2.4.2004 Репутация: 8 Всего: 23 |
А вот это уже странно...
поменять socket_create на socket
MySQL здесь точно ни при чем.... Насчет Apache точно не могу сказать... Вряд ли |
||||||
|
|||||||
| Гость_Дмитрий |
|
|||
|
Unregistered |
на socket тоже ругается.. вы под виндой запускаете????
|
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 1 Всего: 6 |
покажи
<? echo phpinfo(); ?> возможно php собран без поддержки сокетов должна присутствовать опция --enable-sockets -------------------- |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Вот что написано в php.ini
[Sockets] ; Use the system read function instead of the php_read wrapper. sockets.use_system_read = On и все больше про сокеты ни слова, дык винды или юникс |
|||
|
||||
| skalex |
|
|||
|
Хороший человек ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 895 Регистрация: 2.4.2004 Репутация: 8 Всего: 23 |
Насколько я понял, web-сервер на Вашем компе не настроен ?
Надо посмотреть в браузере результат работы скрипта с вызовом функции phpinfo(). |
|||
|
||||
| Гость_Дмитрий |
|
|||
|
Unregistered |
Web-сервер вообще отсутствует. Даже в Php expert editor ругается на эту функцию. Я в шоке.
|
|||
|
||||
| skalex |
|
||||
|
Хороший человек ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 895 Регистрация: 2.4.2004 Репутация: 8 Всего: 23 |
1. Создайте файл: phpinfo.php следующего вида:
2. В командной строке:
3. Откройте в браузере созданный файл info.htm 4. Искать фразу "--enable-sockets" 5. Если таковая не найдется - забудь про эту задачу! Надо будет перекомпилить php. |
||||
|
|||||
| Гость_Дмитрий |
|
|||
|
Unregistered |
Спасибо. Нет такого слова в этой букве.. Все плохо. Где можно взять нормальный ПХП чтобы это барахло заработало?? :stena
|
|||
|
||||
| skalex |
|
|||
|
Хороший человек ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 895 Регистрация: 2.4.2004 Репутация: 8 Всего: 23 |
Боюсь, что разрешение данного вопроса выходит за рамки этого форума ... Надо качать исходники PHP и компилить вручную. Я такого никогда не делал и что-либо советовать не могу!
|
|||
|
||||
| Alone |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 663 Регистрация: 11.5.2003 Где: Dnepropetrovsk, U A Репутация: 1 Всего: 6 |
-------------------- |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Я так понимаю, что все-таи под вин (упоминался php.exe)...
раскомментируй в php.ini и перезапусти сервер. socket_create(); требует библиотеки. |
|||
|
||||
| Snakemw |
|
|||
|
Unregistered |
Таже байда, раскомментирование php_sockets.dll не помогает, php под WinXP
Система под Windows XP стоит apache 2.0.44 + php 4.3.2 Строчка extension=php_sockets.dll в php.ini раскомментирована в phpinfo() пишет что поддержка сокетов включена. Вот здесь написано что для виндовс юзеров поддержка socket`ов уже включена при компиляции. так почему же я имею на выходе: Call to undefined function: socket() Скрипт запускаю следующий ...
|
|||
|
||||
| Snakemw |
|
|||
|
Unregistered |
Вот ссылка на ресурс где говорится что подержка sockets включена при компилировании под Win
|
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Такой функции и нету...
Есть socket_create();
Это если брать обращение через fsockopen... А тут - отдельная библиотека. |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Snakemw, а ты после того как либу раскоментировал сервак перезапускал?
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| Snakemw |
|
|||
|
Unregistered |
Теперь пишет Undefined function bind()
Странно... это я по поводу socket() ... Скрипт не с потолка брал... а из мануала к пхп4 с сервера www.php.net |
|||
|
||||
| IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
А может socket_bind?
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
Для отладки можно использовать Денвер: www.dklab.ru
Но можно и всё ручками поставить: www.apache.org www.php.net |
|||
|
||||
| Snakemw |
|
|||
|
Unregistered |
С функциями для работы с сокетами разобрался, действительно до php 4.1.1 использовались socket, bind, read ...
далее их поменяли на socket_create, socket_bind, socket_read, и т.д. но как водится документация подвела... Значит php telnet server запустился.. наконец.... но при попытке соединиться, telnet выдает приглашение: Welcome to the PHP Test Server. To quit, type 'quit'. To shut down the server type 'shutdown' (кстати, лесенкой он сам выдает... хотя после первой строчки стоит \n) и рубит коннект. В браузере пишет ошибку Warning: socket_read() unable to read from socket [0]: Операция успешно завершена. in C:\WWW\socket\start_monitor.php on line 39 socket_read() failed: reason: Неверная функция. юзаю встроенный в винду telnet клиент |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
хм... чуть не забыл .. код теперь выглядит так..
|
|||
|
||||
| snakemw |
|
|||
|
Unregistered |
Ндя... мысли закончились?
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |