|
Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Warning fopen() |
|
Warning fopen()
|
![]() Пользователь Сообщения: 122 |
Есть вот такая функция:
function add_log($var_func) { include_once "config.php"; include_once "connect_db.php"; $fp = fopen ("$squid_log_path/access.log.$var_func","r"); while ($userinfo = fscanf ($fp, "%s\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t")) { list ($datetime, $session, $ip_client, $http_code, $size, $request_m, $url, $ident, $data_host, $type) = $userinfo; $date_ok = date('Y-n-j H:i:s', strtotime('+3 hour', $datetime)); $ip_drop = sscanf($ip_client, "%d\x2E%d\x2E%d\x2E%d"); list ($ip1, $ip2, $ip3, $ip4) = $ip_drop; $ip1_h = dechex ($ip1); $ip2_h = dechex ($ip2); $ip3_h = dechex ($ip3); $ip4_h = dechex ($ip4); $result = mysql_query("INSERT INTO squid_log VALUES ('$ip1_h','$ip2_h','$ip3_h','$ip4_h','$date_ok','$url','$http_code','$size','$session')") or die("Invalid query"); if ($result) echo "<FONT COLOR=GREEN>ok</FONT><BR>"; else echo "<FONT COLOR=RED>false</FONT>"; }; // while fclose($fp); } //func Warning: fopen(/access.log.8): failed to open stream: No such file or directory in /var/www/html/project/squid.php on line 101 Warning: fscanf(): supplied argument is not a valid File-Handle resource in /var/www/html/project/squid.php on line 102 Warning: fclose(): supplied argument is not a valid stream resource in /var/www/html/project/squid.php on line 124 |
|
Отправлено: 01:00, 23-09-2005 |
just mar Сообщения: 3904
|
Профиль | Отправить PM | Цитировать xamelion
хорошо, но давайте, чтобы не было сомнений и можно было идти дальше, введите в начале функции echo $squid_log_path и давайте посмотрим, что вернется. |
Отправлено: 23:12, 23-09-2005 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Кто верит в приведения ?
В общем... читаю вышеуказанный пост mar, захожу на сервер, логинюсь, нахожу нужный файл, нахожу нужную функцию, перед функцией ставлю такой код запускаю, браузер лагает, но выводит ответ первого и восьмого файла, я протирая глаза с просони... нажимаю F5 браузер выводит ответ функции первого и восьмого лога, гляжу вызов цункции, повторно его записываю, бегу в браузер, браузер чуть чуть тужится и выводит ответ первого и восьмого лога. Дастается зажигалка, прикуривается сигарета, ведется пятиминутное раскуривание-обдумывание. Нажимается F5 браузер неохотно выводит ответ, удаляются все "временный файлы" в браузере. Повторяется кнопка f5 результат "отлично". Господа, я первый раз поподаю в такую неловкую ситуацию, и мне очень стыдно перед вами. Дело в том что я со времени написания поста неизменял код т.к. валялся, да и воляюсь с температурой. к машине собственно имею доступ только я. Я больше чем уверен что во всем виноват личный ККР, Еще раз извеняюсь что..... что такой профан в php. P.S. ККР - Коофициент кривизны рук. |
Отправлено: 07:49, 24-09-2005 | #12 |
![]() Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать ой.. еще раз прошу прощения, ошибка так и остается открытая, в связи со своей невнимательностью я при последнем тесте убрал переменную $squid_log_path и на ее место поставил путь целиком до файловой системы ( об этом я писал в последнем посте ) и так и не убрал это.
mar function add_log($var_func) { include_once "config.php"; include_once "connect_db.php"; echo "$squid_log_path <BR>"; $fp = fopen ("$squid_log_path/access.log.$var_func","r"); while ($userinfo = fscanf ($fp, "%s\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t")) { list ($datetime, $session, $ip_client, $http_code, $size, $request_m, $url, $ident, $data_host, $type) = $userinfo; $date_ok = date('Y-n-j H:i:s', strtotime('+3 hour', $datetime)); $ip_drop = sscanf($ip_client, "%d\x2E%d\x2E%d\x2E%d"); list ($ip1, $ip2, $ip3, $ip4) = $ip_drop; $ip1_h = dechex ($ip1); $ip2_h = dechex ($ip2); $ip3_h = dechex ($ip3); $ip4_h = dechex ($ip4); $result = mysql_query("INSERT INTO squid_log VALUES ('$ip1_h','$ip2_h','$ip3_h','$ip4_h','$date_ok','$url','$http_code','$size','$session')") or die("Invalid query"); if ($result) echo "<FONT COLOR=GREEN>ok</FONT><BR>"; else echo "<FONT COLOR=RED>false</FONT>"; }; // while /opt/squid/var/logs/ ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok Warning: fopen(/access.log.8): failed to open stream: No such file or directory in /var/www/html/project/squid.php on line 105 Warning: fscanf(): supplied argument is not a valid File-Handle resource in /var/www/html/project/squid.php on line 106 Warning: fclose(): supplied argument is not a valid stream resource in /var/www/html/project/squid.php on line 128 exit Если поменять вызов цункций местами, Вот так например: то получается вот такой ответ: /opt/squid/var/logs/ ok .... ( В связи что в файле "access.log.8" 1082 Строки, ответ чуть чуть порезан для читабельности) .... ok ok ok ok ok ok ok ok Warning: fopen(/access.log.1): failed to open stream: No such file or directory in /var/www/html/project/squid.php on line 105 Warning: fscanf(): supplied argument is not a valid File-Handle resource in /var/www/html/project/squid.php on line 106 Warning: fclose(): supplied argument is not a valid stream resource in /var/www/html/project/squid.php on line 128 exit |
Отправлено: 08:25, 24-09-2005 | #13 |
Старожил Сообщения: 158
|
Профиль | Отправить PM | Цитировать xamelion
если не сложно, напиши, пожалуйста код config.php. может, что-нибудь прояснится это случайно не phpBB2? |
------- Отправлено: 09:50, 24-09-2005 | #14 |
![]() Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать |
Отправлено: 11:00, 24-09-2005 | #15 |
![]() Ветеран Сообщения: 1864
|
Профиль | Отправить PM | Цитировать xamelion
Я не уверен, что в этом ошибка, но мало ли что бывает...: У Вас переменная $squid_log_path содержит /opt/squid/var/logs/ , то есть уже с закрывающим слешем , но когда вы вызываете функцию fopen, вы используете такой адрес в качестве параметра $squid_log_path/access.log.$var_func , опять со слешем, то есть путь до файла сейчас /opt/squid/var/logs//access.log.$var_func , что естественно не очень правильно в контексте определённой ОС, либо система ищет файл /access.log.$var_func Попробуйте один из слешей убрать, что получиться? |
Отправлено: 13:04, 24-09-2005 | #16 |
![]() Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Я уже постил по поводу "правильности написания слешей" http://forum.oszone.net/showthread.php?t=53904 но меня проигнорили....
я попробую сейчас изменить слеши, когда ответ дам, незнаю, потому что в москве щас из за падения линии проблемы с сайтами .net .com и вообще что дальше москвы ![]() |
Отправлено: 13:34, 24-09-2005 | #17 |
![]() Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать убрал один слешь с файла config.php результат такой же.
убирать слешь со страки этот $squid_log_path/access.log.$var_func нету смысла. получится "$squid_log_pathaccess.log.$var_func" |
Отправлено: 13:46, 24-09-2005 | #18 |
![]() Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Может поможет весь код целиком?
дейсвия начинаются с файла index.php откуда передается параметр find_squid_file После чего вызывается функция find_squid_file(); <? //////////////////////////////////////////////////////// foreach($_REQUEST as $index => $val) { if ('find_squid_file' == $index ) find_squid_file(); if ('show' == $index ) show_ii(); if ('show_log0' == $index ) add_log(0); if ('show_log1' == $index ) add_log(1); if ('show_log2' == $index ) add_log(2); if ('show_log3' == $index ) add_log(3); if ('show_log4' == $index ) add_log(4); if ('show_log5' == $index ) add_log(5); if ('show_log6' == $index ) add_log(6); if ('show_log7' == $index ) add_log(7); if ('show_log8' == $index ) add_log(8); if ('show_log9' == $index ) add_log(9); if ('show_log_all' == $index ) all_log(); echo "exit<br>"; exit(); } //////////////////////////////////////////////////////// ?> <? /////////////////////////////////////////////////////////////////////////// function find_squid_file() { include "config.php"; $a_while = 0; while ($a_while <= 9){ global $squid_file; $squid_file[] = file_exists("$squid_log_path/access.log.$a_while"); $a_while++; }; //while show_file_log(); ?> <form action = "squid.php" method="post"> <input type="submit" name="show_log_all" value="перечитать все логи"><br> </input> </form> <? }; //func ///////////////////////////////////////////////////////////////////////////// ?> <? ///////////////////////////////////////////////////// function all_log() { add_log(8); // Временно вызваны 2 функции, ниже цикл закоментирован add_log(1); // по пречине описанной чуть ниже, как только цикл заработает, цикл будет вызывать функции с переменными. /* global $squid_file; // Вот с этим циклом у меня тоже проблемы, я пытаюсь foreach ($squid_file as $index => $var){ // их решить один, т.к. не решался закидывать if ($var == 1){ // весь "флуд-код" на форум, так же замечу что php я занимаюсь меньше месяца, add_log($var); // поэтому я уверен что ошибок тут будет миллион. Одну критику я уже воспринил, }; // это поповоду mysql базы, правильнее будет вставлять данные не в цикле, а копить }; //foreach // их, а затем целиком вставить. В общем то критика очень даже приветствуется. // Тут проблема в том что после строки global $squid_file; массив пустой :( */ }; //func ///////////////////////////////////////////////////// ?> <? ///////////////////////////////////////////////////////////////////////////// function add_log($var_func) { include_once "config.php"; include_once "connect_db.php"; echo "$squid_log_path <BR>"; $fp = fopen ("$squid_log_path/access.log.$var_func","r"); while ($userinfo = fscanf ($fp, "%s\t%s\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t")) { list ($datetime, $session, $ip_client, $http_code, $size, $request_m, $url, $ident, $data_host, $type) = $userinfo; $date_ok = date('Y-n-j H:i:s', strtotime('+3 hour', $datetime)); $ip_drop = sscanf($ip_client, "%d\x2E%d\x2E%d\x2E%d"); list ($ip1, $ip2, $ip3, $ip4) = $ip_drop; $ip1_h = dechex ($ip1); $ip2_h = dechex ($ip2); $ip3_h = dechex ($ip3); $ip4_h = dechex ($ip4); $result = mysql_query("INSERT INTO squid_log VALUES ('$ip1_h','$ip2_h','$ip3_h','$ip4_h','$date_ok','$url','$http_code','$size','$session')") or die("Invalid query"); if ($result) echo "<FONT COLOR=GREEN>ok</FONT><BR>"; else echo "<FONT COLOR=RED>false</FONT>"; }; // while fclose($fp); } //func ////////////////////////////////////////////////////////////////////////////// ?> <? /////////////////////////////////////////////////////////////////////////////// function show_file_log() { include_once "config.php"; global $squid_file; // А тут он например без проблем работает. foreach ($squid_file as $index => $var){ if ($var == 1){ ?> <form action = "squid.php" method="post"> <input type="submit" name="show_log<?echo $index;?>" value="пересчитать лог-файл access.log.<?echo $index;?>"> </input> Размер <?echo filesize("/opt/squid/var/logs/access.log.$index")?> байт. Создан <?echo date('Y-n-j H:i:s', (filemtime("/opt/squid/var/logs/access.log.$index")))?> </form> <? }; }; //foreach }; //func ////////////////////////////////////////////////////////////////////////////// ?> |
Отправлено: 14:10, 24-09-2005 | #19 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
error! Warning: mysql_num_rows() | dihlof0s | Вебмастеру | 5 | 05-08-2008 11:10 | |
Warning SCECLI | EndErr | Microsoft Windows NT/2000/2003 | 4 | 18-07-2007 16:41 | |
как с помощью fopen писать в файл на своем диске | vagner_HATE | Вебмастеру | 7 | 04-10-2005 21:47 | |
Warning disk | ZloiJoker | Microsoft Windows NT/2000/2003 | 7 | 13-03-2004 22:13 | |
Warning NetLogon | ZloiJoker | Microsoft Windows NT/2000/2003 | 11 | 29-01-2004 15:40 |
|