ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

проблема записи логов в файл (php)
  #1  
Старый 01.11.2009, 10:21
Аватар для mr.celt
mr.celt
Участник форума
Регистрация: 06.02.2008
Сообщений: 110
Провел на форуме:
217423

Репутация: 32
По умолчанию проблема записи логов в файл (php)

Вот у меня тут проблемка произошла...
На удаленном линуксовом серваке нахождится php-скрипт, который пишет логи в файл, находящийся рядом. Вот код скрипта:

PHP код:
$text date('H-i-s')."\n"
$file fopen("logs.txt","a"); 
fwrite($file$text);
fclose($file); 
Скрипт наипростейший,) Он стабильно работал на протяжении года. Раз в неделю я логи удалял, т.е. файл логов принимал нулевой размер. 3 дня назад логи перестали записываться в пустой файл и спокойно попадают в него, когда размер файла логов не нулевой.
Права на файл с логами - 666. В чем причина такого изменения?

Последний раз редактировалось mr.celt; 01.11.2009 в 10:24..
 
Ответить с цитированием

  #2  
Старый 01.11.2009, 11:25
Аватар для qW1zer
qW1zer
Участник форума
Регистрация: 24.08.2009
Сообщений: 145
Провел на форуме:
285318

Репутация: 17
Отправить сообщение для qW1zer с помощью ICQ
По умолчанию

Цитата:
$text = date('H-i-s');
$file = fopen("logs.txt","a");
fwrite($file, "$text\n");
fclose($file);
Попробуй так или
Цитата:
$text = date('H-i-s');
$file = fopen("logs.txt","a");
fwrite($file, "$text"\n);
fclose($file);
Так
 
Ответить с цитированием

  #3  
Старый 01.11.2009, 11:32
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

2 qW1zer:

Второй вариант некорректный, \n не может быть за пределами кавычек

2 mr.celt:

Попробуй прежде чем писать в файл, проверять его на доступность:

PHP код:
$text date('H-i-s')."\n";  
$file fopen("logs.txt","a");  
if (
$filefwrite($file$text "\r\n");  #<-----
fclose($file); 
 
Ответить с цитированием

  #4  
Старый 01.11.2009, 11:38
Аватар для qW1zer
qW1zer
Участник форума
Регистрация: 24.08.2009
Сообщений: 145
Провел на форуме:
285318

Репутация: 17
Отправить сообщение для qW1zer с помощью ICQ
По умолчанию

Pashkela
Спасибо за информацию!
А вот про доступность,разве нельзя просто открыть файл с права a+ и если файла нет,он будет создан!Или я не прав?
 
Ответить с цитированием

  #5  
Старый 01.11.2009, 11:42
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

http://php.net/manual/en/function.fopen.php

Цитата:
'a' Open for writing only; place the file pointer at the end of the file. If the file does not exist, attempt to create it.
'a+' Open for reading and writing; place the file pointer at the end of the file. If the file does not exist, attempt to create it.
+ просто открывает еще и на чтение, доступность тут не причем. Если файл не существует, то создаться и при а и при а+

Доступностью в данном случае названа проверка того, что файл открылся на запись:

$file = fopen("logs.txt","a");
if ($file) ...

PS: Успел открыться (создаться), прежде чем в него начали что-то писать. Актуально при большом потоке логируемых данных, да и вообще так правильней делать
 
Ответить с цитированием

  #6  
Старый 01.11.2009, 12:03
Аватар для b3
b3
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме:
1698585

Репутация: 818


Отправить сообщение для b3 с помощью ICQ
По умолчанию

Зачем так много строк? И кстати насчет прав, а разве не 777 права нада для записи в файл?
PHP код:
<?php
file_put_contents
('logs.txt',date('H-i-s')."\r\n",FILE_APPEND);
?>
 
Ответить с цитированием

  #7  
Старый 01.11.2009, 12:05
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

даже 644 достаточно

PS: Вообще иметь на хосте что-либо 755 или 777 чревато
 
Ответить с цитированием

  #8  
Старый 01.11.2009, 12:59
Аватар для Deathdreams
Deathdreams
Постоянный
Регистрация: 08.11.2008
Сообщений: 498
Провел на форуме:
2603363

Репутация: 278
Отправить сообщение для Deathdreams с помощью ICQ
По умолчанию

b3

Твой вариант не на любой случай жизни расчитан.
В PHP4 нету функции file_put_contents, поэтому вариант пашкелы тут более уместен.
 
Ответить с цитированием

  #9  
Старый 01.11.2009, 13:03
Аватар для m0Hze
m0Hze
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме:
6462214

Репутация: 3171


По умолчанию

Цитата:
Сообщение от Deathdreams  
b3

Твой вариант не на любой случай жизни расчитан.
В PHP4 нету функции file_put_contents, поэтому вариант пашкелы тут более уместен.
За 2 года сайто строительства,встреча php4 всего 2-3 раза.
 
Ответить с цитированием

  #10  
Старый 01.11.2009, 13:49
Аватар для d_x
d_x
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме:
4137635

Репутация: 2407


По умолчанию

Во варианте от Pashkela если файл не может быть открыт, то fclose вывалит warning. Плюс блочить доступ на запись к файлу неплохо, если в лог активно записи добавляются несколькими процессами.
PHP код:
$text date('H-i-s')."\n";   
$file fopen('logs.txt','a');   
if (
$file)
{
  
flock($file,LOCK_EX);
  
fwrite($file$text);
  
flock($file,LOCK_UN);
  
fclose($file);

 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фейки dgonik777 E-Mail 34 14.06.2009 04:01
Поиск PHP уязвимостей на примере phpBB _-[A.M.D]HiM@S-_ Статьи 1 29.10.2006 11:18
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Долбим Sql’ные базы данных k00p3r Чужие Статьи 0 13.06.2005 14:13



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ