Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не подключается процедура 
:(
    Опции темы
Гость_Дмитрий
Дата 6.12.2004, 12:22 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











запускаю файлик php.exe *.php, и вижу следующую херь : Fatal error : Call to undefined function : socket_create далее пишет где это в файле.

В чем проблема????
  Вверх
Alone
Дата 6.12.2004, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: 1
Всего: 6



А подробнее? Код в студию...
Может ошибка в задаваемых параметрах? (что скорее всегоsmile )


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
Guest
Дата 6.12.2004, 12:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


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] smile
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
Дата 6.12.2004, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: 1
Всего: 6



Э... а на что ругается?
ошибку запости сюда...

у себя проверил - ошибок не выдает. Дескриптор сокета создает. И опции задаются тоже безболезненно...


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
Гость_Дмитрий
Дата 6.12.2004, 13:03 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Fatal error : Call to undefined function : socket_create,

как ты запускал и какие настройки нужны??
  Вверх
skalex
Дата 6.12.2004, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 8
Всего: 23



На мой взгляд, ошибка очевидна.
Цитата
Fatal error : Call to undefined function : socket_create
означает что, такая функция неопределена.
1. Какая у Вас версия php?
2. Попробуйте использовать функцию: socket().
PM   Вверх
Гость_дмитрий
Дата 6.12.2004, 13:24 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











4.3.9 -версия ПХП.

куда функцию засунуть и что она меняет???

Кстати это не только у вас она запускается, у знакомого тоже. Может необходимо наличие апача или MySql
  Вверх
skalex
Дата 6.12.2004, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 8
Всего: 23



Цитата
4.3.9 -версия ПХП

А вот это уже странно...
Цитата
куда функцию засунуть и что она меняет???

поменять socket_create на socket
Цитата
Может необходимо наличие апача или MySql

MySQL здесь точно ни при чем.... Насчет Apache точно не могу сказать... Вряд ли
PM   Вверх
Гость_Дмитрий
Дата 6.12.2004, 13:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











на socket тоже ругается.. вы под виндой запускаете????
  Вверх
Alone
Дата 6.12.2004, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: 1
Всего: 6



покажи
<?
echo phpinfo();
?>
возможно php собран без поддержки сокетов smile
должна присутствовать опция --enable-sockets


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
Guest
Дата 6.12.2004, 13:42 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Вот что написано в php.ini

[Sockets]
; Use the system read function instead of the php_read wrapper.
sockets.use_system_read = On


и все больше про сокеты ни слова, дык винды или юникс

  Вверх
skalex
Дата 6.12.2004, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 8
Всего: 23



Насколько я понял, web-сервер на Вашем компе не настроен ?
Надо посмотреть в браузере результат работы скрипта с вызовом функции phpinfo().
PM   Вверх
Гость_Дмитрий
Дата 6.12.2004, 13:58 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Web-сервер вообще отсутствует. Даже в Php expert editor ругается на эту функцию. Я в шоке.
  Вверх
skalex
Дата 6.12.2004, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 8
Всего: 23



1. Создайте файл: phpinfo.php следующего вида:
Код

<?php
phpinfo();
?>


2. В командной строке:
Код

php phpinfo.php > info.htm


3. Откройте в браузере созданный файл info.htm

4. Искать фразу "--enable-sockets"

5. Если таковая не найдется - забудь про эту задачу! smile

Надо будет перекомпилить php.
PM   Вверх
Гость_Дмитрий
Дата 6.12.2004, 14:12 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо. Нет такого слова в этой букве.. Все плохо. Где можно взять нормальный ПХП чтобы это барахло заработало?? :stena
  Вверх
skalex
Дата 6.12.2004, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 8
Всего: 23



Боюсь, что разрешение данного вопроса выходит за рамки этого форума ... Надо качать исходники PHP и компилить вручную. Я такого никогда не делал и что-либо советовать не могу!
PM   Вверх
Alone
Дата 6.12.2004, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: 1
Всего: 6



Если под вынь - рекомендую пакет Denver
http://dklab.ru


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 6.12.2004, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Я так понимаю, что все-таи под вин (упоминался php.exe)...
Код
;extension=php_sockets.dll

раскомментируй в php.ini и перезапусти сервер.
socket_create(); требует библиотеки.
PM ICQ   Вверх
Snakemw
Дата 20.12.2004, 23:30 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


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()

Скрипт запускаю следующий ...

Код

<?php
error_reporting (E_ALL);

/* Allow the script to hang around waiting for connections. */
set_time_limit (0);

$address = '192.168.1.53';
$port = 10000;

if (($sock = socket (AF_INET, SOCK_STREAM, 0)) < 0) {
  echo "socket() failed: reason: " . strerror ($sock) . "\n";
}

if (($ret = bind ($sock, $address, $port)) < 0) {
  echo "bind() failed: reason: " . strerror ($ret) . "\n";
}

if (($ret = listen ($sock, 5)) < 0) {
  echo "listen() failed: reason: " . strerror ($ret) . "\n";
}

do {
  if (($msgsock = accept_connect($sock)) < 0) {
      echo "accept_connect() failed: reason: " . strerror ($msgsock) . "\n";
      break;
  }
  do {
      $buf = '';
      $ret = read ($msgsock, $buf, 2048);
      if ($ret < 0) {
          echo "read() failed: reason: " . strerror ($ret) . "\n";
          break 2;
      }
      if ($ret == 0) {
          break 2;
      }
      $buf = trim ($buf);
      if ($buf == 'quit') {
          close ($msgsock);
          break 2;
      }
      $talkback = "PHP: You said '$buf'.\n";
      write ($msgsock, $talkback, strlen ($talkback));
      echo "$buf\n";
  } while (true);
  close ($msgsock);
} while (true);

close ($sock);
?>


  Вверх
Snakemw
Дата 20.12.2004, 23:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Вот ссылка на ресурс где говорится что подержка sockets включена при компилировании под Win
  Вверх
Mal Hack
Дата 20.12.2004, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Такой функции и нету...
Есть socket_create();
Цитата
Вот ссылка на ресурс где говорится что подержка sockets включена при компилировании под Win

Это если брать обращение через fsockopen...
А тут - отдельная библиотека.
PM ICQ   Вверх
IZ@TOP
Дата 21.12.2004, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Snakemw, а ты после того как либу раскоментировал сервак перезапускал?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Snakemw
Дата 21.12.2004, 09:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Теперь пишет Undefined function bind()

Странно... это я по поводу socket() ... Скрипт не с потолка брал... а из мануала к пхп4 с сервера www.php.net
  Вверх
IZ@TOP
Дата 21.12.2004, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



А может socket_bind?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 21.12.2004, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Для отладки можно использовать Денвер: www.dklab.ru
Но можно и всё ручками поставить: www.apache.org www.php.net
PM MAIL Skype   Вверх
Snakemw
Дата 22.12.2004, 11:40 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











С функциями для работы с сокетами разобрался, действительно до php 4.1.1 использовались socket, bind, read ...
далее их поменяли на socket_create, socket_bind, socket_read, и т.д. но как водится документация подвела... smile были укзааны старые версии...

Значит 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
Дата 22.12.2004, 11:46 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











хм... чуть не забыл .. код теперь выглядит так..

Код

<?php
error_reporting(E_ALL);

/* Allow the script to hang around waiting for connections. */
set_time_limit(0);

/* Turn on implicit output flushing so we see what we're getting
* as it comes in. */
ob_implicit_flush();

$address = '127.0.0.1';
$port = 10000;

if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
   echo "socket_create() failed: reason: " . socket_strerror($sock) . "\n";
}

if (($ret = socket_bind($sock, $address, $port)) < 0) {
   echo "socket_bind() failed: reason: " . socket_strerror($ret) . "\n";
}

if (($ret = socket_listen($sock, 5)) < 0) {
   echo "socket_listen() failed: reason: " . socket_strerror($ret) . "\n";
}

do {
   if (($msgsock = socket_accept($sock)) < 0) {
       echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
       break;
   }
   /* Send instructions. */
   $msg = "\nWelcome to the PHP Test Server. \n".
       "\nTo quit, type 'quit'. To shut down the server type 'shutdown'.\n";
   socket_write($msgsock, $msg, strlen($msg));

   do {
//       $buf = socket_read($msgsock, 2048, PHP_NORMAL_READ);

       if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
           echo "socket_read() failed: reason: " . socket_strerror($ret) . "\n";
          break 2;
       }

       if (!$buf = trim($buf)) {
           continue;
       }
       if ($buf == 'quit') {
           break;
       }
       if ($buf == 'shutdown') {
           socket_close($msgsock);
           break 2;
       }
       $talkback = "PHP: You said '$buf'.\n";
       socket_write($msgsock, $talkback, strlen($talkback));
       echo "$buf\n";
   } while (true);
   socket_close($msgsock);
} while (true);

socket_close($sock);
?>




  Вверх
snakemw
Дата 24.12.2004, 09:04 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ндя... мысли закончились? smile
  Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1389 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.