Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Warning fopen()

Ответить
Настройки темы
Warning fopen()

Аватара для xamelion

Пользователь


Сообщения: 122
Благодарности: 1

Профиль | Отправить PM | Цитировать


Есть вот такая функция:
Код: Выделить весь код
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
если ДО функции в коде написать код
Код: Выделить весь код
add_log(1);
то функция вызовится нормально, если же написать вот такой код
Код: Выделить весь код
add_log(1);
add_log(8);
то выдается вот такая ошибка
Код: Выделить весь код
 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
Опять же, если просто использовать функцию
Код: Выделить весь код
 add_log(8);
то функция вызывается.

Отправлено: 01:00, 23-09-2005

 

Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


Первый Warning говорит, что нет такого файла
Два других-это следствие того, что файл не был открыт
Почему так происходит - хмм..... По какой то причине не находит файл

-------
Fortes fortuna adiuvat


Отправлено: 02:40, 23-09-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для xamelion

Пользователь


Сообщения: 122
Благодарности: 1

Профиль | Отправить PM | Цитировать


Сейчас из кода заменил одну строчку

Код: Выделить весь код
$fp = fopen ("$squid_log_path/access.log.$var_func","r");
на

Код: Выделить весь код
$fp = fopen ("/opt/squid/var/logs/access.log.$var_func","r");
и код благополучно выполнил всю работу. но почему? ведь писать путь к файлам целиком это не есть хорошо, в случаи миграции кода на другую систему сколько надо будет перелопатить...


Отправлено: 06:19, 23-09-2005 | #3


Аватара для xamelion

Пользователь


Сообщения: 122
Благодарности: 1

Профиль | Отправить PM | Цитировать


что то мне кажется где то я вот такую функцию пропустил pclose();

Отправлено: 09:04, 23-09-2005 | #4


Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


а что содержится в переменной $squid_log_path?

-------
Fortes fortuna adiuvat


Отправлено: 13:08, 23-09-2005 | #5


Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


pclose(); нужен когда открывается процесс функцией popen()

-------
Fortes fortuna adiuvat


Отправлено: 13:10, 23-09-2005 | #6


Аватара для xamelion

Пользователь


Сообщения: 122
Благодарности: 1

Профиль | Отправить PM | Цитировать


$squid_log_path? = "/opt/squid/var/logs";

ну переменная записанна в файле config.php

Отправлено: 15:10, 23-09-2005 | #7


Аватара для elfoflorien

Старожил


Сообщения: 158
Благодарности: 1

Профиль | Отправить PM | Цитировать


xamelion
может быть, добавить строки проверки существования файла:

PHP код: Выделить весь код

if( file_exists"$squid_log_path/access.log.$var_func" ))

    
$fp fopen ("$squid_log_path/access.log.$var_func","r");
else
    die( 
"log file access.log.$var_func does not exist" ); 

-------
panem et circences! (c)


Отправлено: 15:59, 23-09-2005 | #8


Аватара для elfoflorien

Старожил


Сообщения: 158
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата:
то выдается вот такая ошибка

Код:
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
xamelion
PHP код: Выделить весь код

$fp fopen ("$squid_log_path/access.log.$var_func","r"); 


как, скажите мне, может появиться путь /access.log.8, если была конкретная строчка,
в которой был прописан путь с $squid_log_path, и $squid_log_path действительно
имеет значение?
Цитата:
$squid_log_path? = "/opt/squid/var/logs";
значит, в переменной $squid_log_path нет пути, и ошибку надо искать в этом?

-------
panem et circences! (c)


Отправлено: 16:31, 23-09-2005 | #9


Аватара для xamelion

Пользователь


Сообщения: 122
Благодарности: 1

Профиль | Отправить PM | Цитировать


Но!, но если вызов функции зделать вот такую
add_log(1);
то код выполнится верно
если же вот такую строчку:
add_log(8);
То код тоже выполняет все верно, Но если вписать до функции сразу 2 вызова функции скажем так
add_log(1);
add_log(8);
то код не_будет выполнен корректно и даст ошибку.

Ошибка выводится только если выполнять эту функцию 2 и более раза, в одинарном случаи он выполняет и add_log(1); и add_log(8);
а это значит что конфиг.ПХП путя, файл, хард и видяшка работает отлично. Проблема лишь в том что на второй раз вызов функции дает збой.

P.S. Почему только у меня талант клепать такие ошибки ?

Отправлено: 20:45, 23-09-2005 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Warning fopen()

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход