PHP.SU

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


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

> Без описания
sKaa
Отправлено: 09 Ноября, 2011 - 12:18:01
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


PHP 5.3.8
PHP:
скопировать код в буфер обмена
  1.  
  2. function __autoload($classname) {
  3.         $filename = 'system/php/' . $classname . '.php';
  4.         if(file_exists($filename)){
  5.                 echo 'please wait for loading ' . $classname .'.php...';
  6.                 include_once($filename);
  7.                 }else{
  8.                 echo 'invalid file '. $filename;
  9.                 }
  10.        
  11.         }
  12.  
  13. $base = new core();
  14.  

Выдает мне следующее : please wait for loading core.php... Fatal error: Class 'core' not found in C:\www\tm\index.php on line 30

В чем причина??
 
 Top
Мелкий Супермодератор
Отправлено: 09 Ноября, 2011 - 12:25:28
Post Id



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


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


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




autoload совершенно не при делах, он честно отработал.
В подключённом файле не оказалось класса core.

PS: include_once для автолоада не нужен, он и сам проверяет, доступен ли уже запрашиваемый класс, или его надо загружать. Двойная работа получается.


-----
PostgreSQL DBA
 
 Top
sKaa
Отправлено: 09 Ноября, 2011 - 12:27:56
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


Содержимое файла system/php/core.php :
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. class core {
  4.         //@{
  5.         public $registry;      
  6.                
  7.         //@}
  8.        
  9.  
  10.                
  11.         function __construct(){
  12.                 echo 123;
  13.                 }
  14.        
  15.        
  16.         }
  17.  

Мелкий, мне себя достаточно трудно отнести к новичкам, в пхп 5.1 всё работало, сегодня перешел на 5.3.8 и сразу такое, как я только не бился..
 
 Top
Мелкий Супермодератор
Отправлено: 09 Ноября, 2011 - 12:50:57
Post Id



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


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


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




Ну, чего быть не может. Проверяйте пути, может хватается какой другой файл core.

PHP5.3.3, 5.3.5, 5.3.8 копипаста представленного кода работает.


-----
PostgreSQL DBA
 
 Top
sKaa
Отправлено: 09 Ноября, 2011 - 12:56:30
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


У меня нет другова файла! Все папки пусты, только
index.php
и
system/php/core.php
)))) ну я че за тип бы был еслиб другой файл цеплял )))
пробовал даже так :
PHP:
скопировать код в буфер обмена
  1.  
  2. define ('DS', DIRECTORY_SEPARATOR);
  3. define ('SITE_PATH', realpath(dirname(__FILE__) . DS . '..' . DS) . DS);
  4.  

толку нет ))
щя ещё попробую core.php переместить в корень чтоли) хз уже че делать...
мне кажется это как-то связано с namespace в 5.3.8 но я их не использовал ещё.
гугл тоже выдает кучу результатов по "не работает __autoload php 5.3.8" но по делу там ниче конкретного ))
 
 Top
EuGen Администратор
Отправлено: 09 Ноября, 2011 - 13:03:19
Post Id


Профессионал


Покинул форум
Сообщений всего: 9096
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Посмотрите, что же отладка сообщает. Например, так:
PHP:
скопировать код в буфер обмена
  1. function __autoload($classname) {
  2.         $filename = 'system/php/' . $classname . '.php';
  3.         if(file_exists($filename)){
  4.                 echo 'please wait for loading ' . $classname .'.php...';
  5.                 include_once($filename);
  6.                 }else{
  7.                 echo 'invalid file '. $filename;
  8.                 }
  9.            var_dump(get_declared_classes());   
  10.         }


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
caballero
Отправлено: 09 Ноября, 2011 - 13:05:03
Post Id


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


Покинул форум
Сообщений всего: 6001
Дата рег-ции: Сент. 2011  
Откуда: Харьков


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




укажи полный путь к файлу


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Мелкий Супермодератор
Отправлено: 09 Ноября, 2011 - 13:06:20
Post Id



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


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


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




И заодно realpath($filename).


-----
PostgreSQL DBA
 
 Top
sKaa
Отправлено: 09 Ноября, 2011 - 13:12:50
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


Так вы тут все умные)), столько советов, чисто человеческое огромное спасибо за идеи, но вот :
мой файл index.php :
Спойлер (Отобразить)


core.php :
Спойлер (Отобразить)


Вот всё что пишет браузер :
Спойлер (Отобразить)
 
 Top
DlTA
Отправлено: 09 Ноября, 2011 - 13:34:15
Post Id



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


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


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




попробуем по глупым вариантам пройтись
$base = new core; => $base = new core();
 
 Top
sKaa
Отправлено: 09 Ноября, 2011 - 13:42:55
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


Короче кто думает что я издеваюсь глядите до чего я дошел :
Спойлер (Отобразить)


Спойлер (Отобразить)


Но за то работает !!!!))))))))) Гуру скажите в чем прикол?
 
 Top
EuGen Администратор
Отправлено: 09 Ноября, 2011 - 13:52:12
Post Id


Профессионал


Покинул форум
Сообщений всего: 9096
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




В этом случае рискну предположить, что в силе ограничение, не позволяющее попросту делать include из указанного каталога.
http://ru.php.net/manual/en/ini....ini.include-path

http://ru.php.net/manual/en/ini....ini.open-basedir

И, если у Вас php ниже 5.3 (хотя судя по замыканию это не так, но все же на всякий случай)
http://ru.php.net/manual/en/ini....hp#ini.safe-mode

И, да, сделайте


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
sKaa
Отправлено: 09 Ноября, 2011 - 13:56:44
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


EuGen, с настройкой пхп у меня туговато ))
Просто в пхп.ини установить значения как там указано?
(Добавление)
EuGen пишет:

Ничего не происходит..

EuGen, Спасибо. Спасибо всем за внимание. Разобрался. Причина действительно крылась где-то в пхп.ини

(Отредактировано автором: 09 Ноября, 2011 - 14:49:33)

 
 Top
EuGen Администратор
Отправлено: 09 Ноября, 2011 - 14:40:44
Post Id


Профессионал


Покинул форум
Сообщений всего: 9096
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Ну так это нужно использовать вместе с include (в первоначальном варианте __autoload)


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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB