The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"PHP-Ping - не могу настроить"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [Проследить за развитием треда]

"PHP-Ping - не могу настроить"
Сообщение от aLGo emailИскать по авторуВ закладки on 18-Сен-03, 18:35  (MSK)
Не пойму в чем дело, толи PHP на сервере "криво собран", толи руки кривые :)) Нм могу его настроить на соем сервере Debian Linux 2.2...
Пробовал на бесплантом хостинге типа hut.ru, вроде заработал, но криво, но заработал, а на моем совсем не хочет. Собирал апачу и PHP не я, он мне достался по наследству от старого админа, а я как бы из начинающих, и  видать чтото не догоняю...

Скрипт стянул отсюда: http://www.hotscripts.com/PHP/Scripts_and_Programs/Networking_Tools/Ping/index.html

Подозрение есть что PHP собран без поддержки секетов... Из за этого скрипт не работает... Такое как гостевая и другие PHP скрипты нормально работают...

Что делать пересобирать PHP+апачи или можно подправить только скрипт, или его только настроить нужно???????????


Вот его текст:

<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
<title>The WorldsEnd.NET - Free Ping Script, written in PHP</title>
</head>
<?php

preg_match("/\/WWW(\/.*)$/",$PHP_SELF,$php_self);
$PHP_SELF = $php_self[1];

//  This script was writen by webmaster@theworldsend.net, Aug.2001
//  http://www.theworldsend.net
//  This is my first script. Enjoy.
//  
// Put it into whatever directory and call it. That's all.
// Updated to 4.2 code
// Get Variable from form via register globals on/off
//-------------------------
$max_count = 10; //maximum count for ping command
$unix      =  1; //set this to 1 if you are on a *unix system      
$windows   =  0; //set this to 1 if you are on a windows system
// -------------------------
// nothing more to be done.
// -------------------------
//globals on or off ?
$register_globals = (bool) ini_get('register_gobals');
$system = ini_get('system');
$unix = (bool) $unix;
$win  = (bool)  $windows;
//
If ($register_globals)
{
   $ip = getenv(REMOTE_ADDR);
   $self = $PHP_SELF;
}
else
{
   $submit = $_GET['submit'];
   $count  = $_GET['count'];
   $host   = $_GET['host'];
   $ip     = $_SERVER['REMOTE_ADDR'];
   $self   = $_SERVER['PHP_SELF'];
};
// form submitted ?
If ($submit == "Ping!")
{
   // over count ?
   If ($count > $max_count)
   {
      echo 'Maximum for count is: '.$max_count;
      echo '<a href="'.$self.'">Back</a>';
   }
   else
   {
      // replace bad chars
      $host= preg_replace ("/[^A-Za-z0-9.]/","",$host);
      echo '<body bgcolor="#FFFFFF" text="#000000"></body>';
      echo("Ping Output:<br>");
      echo '<pre>';          
      //check target IP or domain
      if ($unix)
      {
         system ("ping -c$count -w$count $host");
         system("killall ping");// kill all ping processes in case there are some stalled ones or use echo 'ping' to execute ping without shell
      }
      else
      {
         system("ping -n $count $host");
      }
      echo '</pre>';
    }
}
else
{
    echo '<body bgcolor="#FFFFFF" text="#000000"></body>';
    echo '<p><font size="2">Your IP is: '.$ip.'</font></p>';
    echo '<form methode="post" action="'.$self.'">';
    echo '   Enter IP or Host <input type="text" name="host" value="'.$ip.'"></input>';
    echo '   Enter Count <input type="text" name="count" size="2" value="4"></input>';
    echo '   <input type="submit" name="submit" value="Ping!"></input>';
    echo '</form>';
    echo '<br><b>'.$system.'</b>';
    echo '</body></html>';
}
?>

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "PHP-Ping - не могу настроить"
Сообщение от Sergey emailИскать по авторуВ закладки on 19-Сен-03, 11:37  (MSK)
этот скрипт рабочий
вот он http://www.filtron.com.ua/~greysi/ping.php

или поставь вот этот (создай файлик в cgi-bin/ping.cgi):

#!/bin/sh
#-
# Define the location of the ping utility in your system and specify it
# below:
PING=/bin/ping

# The script starts here
echo "Content-type: text/html"
echo ""
echo ""
echo "<html><head><title>CGI PING Interface</title></head>"
echo "<body bgcolor=white text=darkblue link=orange vlink=orange>"
echo "<h2>CGI PING interface:</h2>"
echo "<p>"
echo "<form method=OUT action=webping.cgi>"
echo "<b>Hostame or IP address to ping: </b>"
echo "<input type=text size=64 name=STR>"
echo "<br><input type=submit value=Submit>"
echo "</form>"
echo "<p>"
if [ "$QUERY_STRING" != "" ]; then
echo "<hr><p>"
HOST=`echo $QUERY_STRING | sed s/STR=// | sed s/\:/\:/g`
if [ "$HOST" = "" ]; then
echo "<ul>Unspecified hostname or IP address.</ul><p>"
else
echo "<h3>Results:</h3><p>"
echo "<p><ul><pre>"
$PING -c 5 $HOST
echo "</pre></ul>"
fi
fi
echo "</body></html>"

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "PHP-Ping - не могу настроить"
Сообщение от aLGo emailИскать по авторуВ закладки on 19-Сен-03, 13:36  (MSK)
>этот скрипт рабочий
>вот он http://www.filtron.com.ua/~greysi/ping.php
А как его приветнить на сервер, его скачать ведь как то надо...

>или поставь вот этот (создай файлик в cgi-bin/ping.cgi):

У меня на сервер CGI настроен как то непонятно, никак не могу, вообще ничего запустить, вроде один скрипт работает, в специальной директории лежит судя по httpd.conf и прописан только он, значить cgi работает, вот только в какую папочку надо скрипты складывать непонятно...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "PHP-Ping - не могу настроить"
Сообщение от Sergey emailИскать по авторуВ закладки on 20-Сен-03, 10:40  (MSK)
>>этот скрипт рабочий
>>вот он http://www.filtron.com.ua/~greysi/ping.php
>А как его приветнить на сервер, его скачать ведь как то надо...
Зачем его скачивать? Он же у тебя есть!

проверь PHP! Сделай файлик, скажем phpinfo.php, и вставь туда:

<?
phpinfo();
?>

когда ты его запустишь в броузере, то увидишь информацию про PHP и те модули, которые у тебя прикручены.

>
>
>
>>или поставь вот этот (создай файлик в cgi-bin/ping.cgi):
>
>У меня на сервер CGI настроен как то непонятно, никак не могу,
>вообще ничего запустить, вроде один скрипт работает, в специальной директории лежит
>судя по httpd.conf и прописан только он, значить cgi работает, вот
>только в какую папочку надо скрипты складывать непонятно...
Папка cgi-bin
#cd /путь_к_apache/cgi-bin/
и cgi файлы должны быть с правами rwx-rwx-rx
#chmod 0755 имя_файла.cgi

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "PHP-Ping - не могу настроить"
Сообщение от Rohan emailИскать по авторуВ закладки on 21-Сен-03, 15:57  (MSK)
Тут создатель темы не уточнил что ему важнее - чтобы скрипт заработал, или разобраться почему у него ПХП не фурычит.
Могу предположить (имел опыт) что не всегда корректно обрабатываются переменные $_GET[] ( я использовал кажется $HTTP_GET_VARS[]).

короче - киньте в меня php.ini (если не страшно %-))  ) и то что
выдает
<?
phpinfo();
>
, если его поставить в самом начале скрипта.

А то наткрально - разгоаор на околопроблемные темы, а данных нет.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "PHP-Ping - не могу настроить"
Сообщение от aLGo emailИскать по авторуВ закладки on 22-Сен-03, 10:34  (MSK)
Мне главное чтобы заработал ping скрипт, причем без разницы на PHP или CGI - начальство хочет, ну а потом чтобы не возникало таких трудностей настроить сервер (PHP, CGI, и прочее). Ведь php работает типа новигация и гостевой без глюков...


>когда ты его запустишь в броузере, то увидишь информацию про PHP и
>те модули, которые у тебя прикручены.
Сделал, вот что получилось:
Configure Command:
'./configure' '--with-mysql=/usr/local/mysql' '--with-apxs=/usr/local/apache/bin/apxs'

Loaded Modules:
mod_php4, mod_setenvif, mod_so, mod_auth, mod_access, mod_alias, mod_userdir, mod_actions, mod_imap, mod_asis, mod_cgi, mod_dir, mod_autoindex, mod_include, mod_status, mod_negotiation, mod_mime, mod_log_config, mod_env, http_core

Может что то не прикручено к апачу, вот и не работает?
Есть подозрение, что PHP как то должен быть собран с поддеркой секетов...


>Папка cgi-bin
>#cd /путь_к_apache/cgi-bin/
>и cgi файлы должны быть с правами rwx-rwx-rx
>#chmod 0755 имя_файла.cgi
Все так, на скрипт лежащий и устанволенный таким образом выдается сообщение:
"Сервер сталкивался с внутренней ошибкой или misconfiguration и был не в состоянии завершить ваш запрос"
Вот ведь беда какая, попробую сейчас найти какойнибудь другой скрипт CGI, попросче и проверить на нем...
Запускал ping.cgi

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "PHP-Ping - не могу настроить"
Сообщение от Sergey emailИскать по авторуВ закладки on 22-Сен-03, 18:24  (MSK)
>Loaded Modules:
>mod_php4, mod_setenvif, mod_so, mod_auth, mod_access, mod_alias, mod_userdir, mod_actions, mod_imap, mod_asis, mod_cgi, mod_dir,
>mod_autoindex, mod_include, mod_status, mod_negotiation, mod_mime, mod_log_config, mod_env, http_core

ты добавил в httpd.conf:
AddType application/x-httpd-php .php .php3

что пишет, когда запускаешь файлик с

<?
phpinfo();
?>

????

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "PHP-Ping - не могу настроить"
Сообщение от Roman Искать по авторуВ закладки on 22-Сен-03, 11:23  (MSK)
или я слепой или у тя в скрипте вообще не используются сокеты и зачем тебе их прикручивать не понимаю.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "PHP-Ping - не могу настроить"
Сообщение от aLGo emailИскать по авторуВ закладки on 22-Сен-03, 12:54  (MSK)
>или я слепой или у тя в скрипте вообще не используются сокеты
>и зачем тебе их прикручивать не понимаю.

Ну, а из за чего тогда не работает???
Может с атрибутами файла чтото??
Смотрю логи апача вот что пишет:
[Mon Sep 22 14:39:36 2003] [error] [client мой айпишник] File does not exist: /usr/local/www/home/php-ping.php

Как не существует, когда я его и запускаю???

  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "PHP-Ping - не могу настроить"
Сообщение от Rohan emailИскать по авторуВ закладки on 25-Сен-03, 01:53  (MSK)
После выбрасывания кучи лишнего (и работы под юнихом хватит)
и, к примеру замены $_GET на $HTTP_GET_VARS
при таком конфиге, со скидкой на версию, что - то начало работать.
Почему не выводятся результаты пинга еще не ясно.
Но ничего, еще ковырну.

<?php
error_reporting(2047);
>  $submit = $HTTP_GET_VARS['submit'];
>  $count  = $HTTP_GET_VARS['count'];
>  $host   = $HTTP_GET_VARS['host'];
#  $ip     = $HTTP_ENV_VARS["REMOTEHOST"];
#  В самом деле лобуда.

#  или isset...
>  if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]=="")
>  {
>  $ip=$HTTP_SERVER_VARS["REMOTE_ADDR"];
>  }
>  else
>  {
>  $ip=$HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
>   }
>   $self   = $HTTP_SERVER_VARS["PHP_SELF"];
If ($submit == "Ping!")
{
   If ($count > $max_count)
   {
      echo 'Maximum for count is: '.$max_count;
      echo '<a href="'.$self.'">Back</a>';
   }
   else
   {
      // replace bad chars
      $host= preg_replace ("/[^A-Za-z0-9.]/","",$host);
      echo '<body bgcolor="#FFFFFF" text="#000000"></body>';
      echo("Ping Output:<br>");
      echo '<pre>';
      //check target IP or domain
echo "ping -c$count -w$count $host";
echo "<br>\r\n";
# Собака где-то здесь!
#
#
#  /sbin или нет????    а что такое -w ????

         system ("/sbin/ping -c".$count." ".$host");
         echo system ("/sbin/ping -c".$count." ".$host")."<br>";
         passthru("/sbin/ping -c".$count." ".$host");
         echo passthru("/sbin/ping -c".$count." ".$host")."<br>";


         echo passthru("ls");


#
#
# это в принципе лишнее
# system("killall ping");// kill all ping processes in case there are
#some stalled ones or use echo 'ping' to execute ping without shell
#
      echo '</pre>';
Дальше все по старому


  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "PHP-Ping - не могу настроить"
Сообщение от aLGo emailИскать по авторуВ закладки on 26-Сен-03, 10:54  (MSK)
Вот, значить что у меня:
httpd.conf  прописано -  User nobody
                         Group nogroup

group прописано - nogroup:x:65534
passwd прописано - nobody:x:65534:65534:nobody:/home:/bin/sh

shalls прописано - /bin/ash
                   /bin/bash
                   /bin/csh
                   /bin/sh
                   /bin/false
                   /usr/bin/es
                   /usr/bin/ksh
                   /usr/bin/rc
                   /usr/bin/tcsh
                   /usr/bin/zsh
                   /bin/sash
                   /bin/zsh
                   /usr/bin/esh

Вроде тут все правильно и должно работать...

Можно как то зайти и проверить это? Ну зайти как то под этим nobody и
попробовать в терминале запустить ping

Ключ -w у Ping не работает, я заходил рутом и проверял в терминале,
работает только -с
Да и в описании про -w не нашел... У меня еще есть в /bin ping6
какойто, ну и ping тоже присутствует...
А воот в /sbin даже не пахнет никаким ping
наверно поэтому когда запускаю скрипт пишется ошибка
в следующей строке:
>echo system ("/sbin/ping -c".$count." ".$host")."<br>";

Посему я подправил в скрипте пути на /bin
         system ("/bin/ping -c".$count." ".$host");
         echo system ("/bin/ping -c".$count." ".$host")."<br>";
         passthru("/bin/ping -c".$count." ".$host");
         echo passthru("/bin/ping -c".$count." ".$host")."<br>";

та же фигня не работает и ошибка в строке
echo system ("/bin/ping -c".$count." ".$host")."<br>";

Не знаю что может, может ping скопировать из /bin в /sbin


  Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "PHP-Ping - не могу настроить"
Сообщение от konst emailИскать по авторуВ закладки on 26-Сен-03, 15:46  (MSK)

>Не знаю что может, может ping скопировать из /bin в /sbin
Я слышал, что нормальные люди запрещают использование системных вызовов в PHP (это где-то в настройках).

Я так и не понял, что у тебя не работает. Если в LOG - file not found то проблема не в пинг.
CHROOT используется?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "PHP-Ping - не могу настроить"
Сообщение от Rohan emailИскать по авторуВ закладки on 26-Сен-03, 16:28  (MSK)
Почти все настройки php нашодятся в файлике php.ini
какой такой файл не найден я не понял - у чувака скрипт открывается.

http://algol.suttk.ru/php_ping.php

здесь можно увидеть вызываемый исходный скрипт (не рабочий напрочь), но вызываемый! И php_info();  в котором
safe mode off;
disabled functions "";

Теперь по делу:
Проверить имеет ли право nobody выполнить подобную хрень можно так:

залогиниться как root

сказать su nobody

выполнить то, что выводится строкой
echo "/bin/ping -c".$count." ".$host; #без "


ключ -w есть под виндой, но накой он здесь вообще использован не ясно.

/bin & /sbin - у меня фря, потому различия есть.

Ошибка ясен пень есть, если ума не хватило перенос строки убрать. Я конечно тоже хорош - автоформат не вырубил. Тем более последняя кавычка в каждодй строке там лишняя. (см выше)

короче
"/bin/ping -c".$count." ".$host"
заменить на (без ")
"/bin/ping -c".$count." ".$host
или (без " + пробел после -c )
"/bin/ping -c ".$count." ".$host"

Копировать что-то куда-то при таком знании системы очень не советую.
А удалять тем более.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "PHP-Ping - не могу настроить"
Сообщение от aLGo emailИскать по авторуВ закладки on 29-Сен-03, 10:59  (MSK)
>ключ -w есть под виндой, но накой он здесь вообще использован не
>ясно.
Ааа, тепрерь яссно, если это виндовый ключ, наверно скрипт на Win хостинг рассчитан тоже, там же в начале скрипта есть выбор:
>$unix      =  1; //set this to 1 if you are on a *unix system      
>$windows   =  0
Вот только дальше что то не работает, ну да ладно, про это можно забыть как кошмарный сон...


>Ошибка ясен пень есть, если ума не хватило перенос строки убрать. Я
>конечно тоже хорош - автоформат не вырубил. Тем более последняя кавычка
>в каждодй строке там лишняя. (см выше)
Это было в первую очередь что мне пришло на ум, Пробовал, не получилось, поэтому и написал... Ну не могу найти я етот перенос, я правлю в notepad или Штирлице IV они не видят этот перенос, я уже и коментировал эту строку - все без толку, ошибка и все, хоть ты-ы тресни...
Уже и Delete и BackSpace'ом удалят и в ту и в другую сторону - безрезультатно...
Кавычки ставил и убирал... С другой стороный, кавычки тут не причем, т.к.


Я решил вернуться к тому месту, где частично работало : http://algol.suttk.ru/p.php
а именно, где скрипт вызывался, но не запускался...
Убрал в нем ключь -w
И, о чудо, оно заработало!!!!
http://algol.suttk.ru/pi.php

Получился следующий скрипт:

<html>
<head>
<title>The WorldsEnd.NET - Free Ping Script, written in PHP</title>
</head>
<?php

//  This script was writen by webmaster@theworldsend.net, Aug.2001
//  http://www.theworldsend.net
//  This is my first script. Enjoy.
//  
// Put it into whatever directory and call it. That's all.
// Updated to 4.2 code
// Get Variable from form via register globals on/off
//-------------------------
$max_count = 10; //maximum count for ping command
$unix      =  1; //set this to 1 if you are on a *unix system      
$windows   =  0; //set this to 1 if you are on a windows system
// -------------------------
// nothing more to be done.
// -------------------------
//globals on or off ?
$register_globals =  1; #(bool) ini_get('register_gobals');
//
   $submit = $HTTP_GET_VARS['submit'];
   $count  = $HTTP_GET_VARS['count'];
   $host   = $HTTP_GET_VARS['host'];
   $ip     = $HTTP_ENV_VARS["REMOTEHOST"];
   $self   = $HTTP_SERVER_VARS["PHP_SELF"];
    
// form submitted ?
If ($submit == "Ping!")
{
   // over count ?
   If ($count > $max_count)
   {
      echo 'Maximum for count is: '.$max_count;
      echo '<a href="'.$self.'">Back</a>';
   }
   else
   {
      // replace bad chars
      $host= preg_replace ("/[^A-Za-z0-9.]/","",$host);
      echo '<body bgcolor="#FFFFFF" text="#000000"></body>';
      echo("Ping Output:<br>");
      echo '<pre>';          
      //check target IP or domain
         system ("ping -c$count $host");
         system("killall ping");
// kill all ping processes in case there are some stalled ones or use echo 'ping' to execute ping without shell
      echo '</pre>';
    }
}
else
{
    echo '<body bgcolor="#FFFFFF" text="#000000"></body>';
    echo '<p><font size="2">Your IP is: '.$ip.'</font></p>';
    echo '<form methode="post" action="'.$self.'">';
    echo '   Enter IP or Host <input type="text" name="host" value="'.$ip.'"></input>';
    echo '   Enter Count <input type="text" name="count" size="2" value="4"></input>';
    echo '   <input type="submit" name="submit" value="Ping!"></input>';
    echo '</form>';
    echo '<br><b>'.$system.'</b>';
    echo '</body></html>';
}
?>


Но IP определяет криво, он помнит IP той машины, с которой запускался самый первый раз скрипт...
Где он оседает, и как бы его очищать и определять заного?

Теперь я так понимаю, попробовать постепенно лишнее убрать из него, как написал Rohan. И посмотреть что получиться...

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру