Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не хочет писать в файл из деструктора

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Не хочет писать в файл из деструктора
LizzarD
Отправлено: 16 Февраля, 2012 - 14:39:55
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Голова уже болит, не могу найти ошибку
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class IniEdit{
  3.         const INI_NAME = "options.ini";
  4.         static $content = array();
  5.         static private $instance=null;
  6.         private function __construct(){
  7.                 $file = file(self::INI_NAME);
  8.                 for ($i=0; $i<count($file)-1 ;$i++){
  9.                         list($n,$v) = explode("=",$file[$i]);
  10.                         self::$content[$n]=$v;
  11.                 };
  12.                 echo "обьект создан<br>";
  13.         }
  14.         private function __clone(){}
  15.         function __destruct(){
  16.                 $fff = fopen("options.ini","r+");
  17.                 foreach(self::$content as $n=>$v){
  18.                         $str = $n."=".$v."\n";
  19.                         echo "-",$str,"-";
  20.                         fwrite($fff,"sdfsd");
  21.                 }
  22.                 echo "<br>обьект удален<br>";
  23.         }
  24.         public function getInstance(){
  25.                 if(self::$instance==null){
  26.                         self::$instance = new IniEdit();
  27.                 }
  28.                 return self::$instance;
  29.         }
  30.         public function set($n,$v){
  31.                 self::$content[$n]=$v;
  32.                 echo "данные внесены ",self::$content[$n]," = ",$n,"<br>";
  33.         }
  34.         public function get($n){
  35.                 return self::$content[$n];
  36.         }
  37.        
  38. };
  39.  
  40. $inifile = IniEdit::getInstance();
  41. $inifile->set("hoz9in","atata");
  42. ?>

создается объект, с помощью метода set в файл пишется строка, которая сохраняется в статполе $content. Я описал деструктор, который должен записывать содержимое $content в файл, но он туда ничего не записывает.... Если просто вне класса написать
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3.                 $f = fopen("options.ini","r+");
  4.                 fwrite($f,"asfsadf");

то все работает отлично.. Подскажите плз, что я тут не так делаю
 
 Top
Мелкий Супермодератор
Отправлено: 16 Февраля, 2012 - 14:55:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Может вы файл где-то не там ищите?
Помимо ворчания уровня E_STRICT, код рабочий.


-----
PostgreSQL DBA
 
 Top
Bio man
Отправлено: 16 Февраля, 2012 - 14:58:29
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




а я знаю в чем проблема! нужно указать полный путь, это такая особенность маленькая

(Отредактировано автором: 16 Февраля, 2012 - 15:14:34)

 
 Top
LizzarD
Отправлено: 16 Февраля, 2012 - 14:59:22
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




[quote=Мелкий][/quote]Ищу то там, но есть предположение, что при таком способе записи в файл, он файл сохраняет в какую-то другую директорию... (использую денвер). Сейчас попробую тупо указать путь файла, в который нужно записать.
 
 Top
Bio man
Отправлено: 16 Февраля, 2012 - 15:00:33
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




PHP:
скопировать код в буфер обмена
  1. $fff = fopen($_SERVER['DOCUMENT_ROOT'].'/pathtofile/'."options.ini","r+");
 
 Top
LizzarD
Отправлено: 16 Февраля, 2012 - 15:01:49
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Попробовал указать полный путь. Проблема осталась..(
 
 Top
Bio man
Отправлено: 16 Февраля, 2012 - 15:05:31
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




такая же проблема была, вы не верно указали полный путь это 100%.
вот кусок моего кода, тоже не записывал в файл. щас записывает
PHP:
скопировать код в буфер обмена
  1. function __destruct(){
  2.                 if($this->_updated){
  3.                         $str = '';
  4.                         foreach($this->_conf as $key => $val){
  5.                                 $str .= "$key = $val\n";
  6.                         }
  7.                         //trim($str);
  8.                         file_put_contents($_SERVER['DOCUMENT_ROOT'].'/'.self::FILENAME, $str);
  9.                 }
  10.                 //$this->_updated = false;
  11.         }

(Добавление)
PHP:
скопировать код в буфер обмена
  1. $fff = fopen($_SERVER['DOCUMENT_ROOT']."/options.ini","r+");
попробуйте так
 
 Top
LizzarD
Отправлено: 16 Февраля, 2012 - 15:14:43
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Благодарю! Все заработало. Оба варианта заработали, я действительно неправильно указал путь, когда скопировал
PHP:
скопировать код в буфер обмена
  1. $fff = fopen($_SERVER['DOCUMENT_ROOT'].'/pathtofile/'."options.ini","r+");

забыл удалить кусок /pathtofile

(Отредактировано автором: 16 Февраля, 2012 - 15:15:40)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Если скрипт не работает »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB