Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZF] Warning: require_once(IndexController.php), failed to open stream
phpion
post
Post #1





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Witam,
muszę napisać pewną aplikację w ZF ale już na starcie mam pewien problem.

Tak wygląda mój index.php:
  1. <?php
  2. // Autoload function
  3. require_once('./__autoload.php');
  4.  
  5. // Set include path for autoload function
  6. set_include_path('/home/phpion/public_html/nanana/libraries:'.get_include_path());
  7.  
  8. // Connect to database...
  9. $db = Zend_Db::factory('Pdo_Mysql', array(
  10. 'host'  => 'localhost',
  11. 'username' => 'root',
  12. 'password' => '',
  13. 'dbname'  => 'nanana'
  14. ));
  15.  
  16. // ...and set it as a default database adapter
  17. Zend_Db_Table_Abstract::setDefaultAdapter($db);
  18.  
  19. // Controllers array
  20. $controllers = array(
  21. 'frontend' => '/home/phpion/public_html/nanana/applications/frontend/controllers',
  22. //'backend' => '/home/phpion/public_html/nanana/applications/backend/controllers'
  23. );
  24.  
  25. // Set & run the front controller
  26. $frontController = Zend_Controller_Front::getInstance();
  27. $frontController->setControllerDirectory($controllers);
  28. $frontController->setDefaultModule('frontend');
  29.  
  30. $frontController->dispatch();
  31. ?>


Wywolanie w przeglądarce wywala:
Kod
Warning: require_once(IndexController.php): failed to open stream: No such file or directory in blablabla


Gdy dodam ścieżkę do kontrolerów do include_path wszystko śmiga:
  1. <?php
  2. // Set include path for autoload function
  3. set_include_path('/home/phpion/public_html/nanana/libraries:/home/phpion/public_html/nanana/applications/frontend/controllers:'.get_include_path());
  4. ?>


O ile dobrze pamiętam przy poprzednim kontakcie z ZF nie musiałem dodawać tej ścieżki. Gdzie robię błąd? O czym zapomniałem?

Pozdrawiam: pion
Go to the top of the page
+Quote Post
stloyd
post
Post #2





Grupa: Zarejestrowani
Postów: 23
Pomógł: 2
Dołączył: 17.06.2004

Ostrzeżenie: (0%)
-----


A czy przypadkiem nie psujesz sobie sam w kodzie pliku __autoload.php ? (zgaduje tongue.gif)
Mój w skróceniu wygląda tak:
  1. <?php
  2.  
  3. ini_set('display_errors', true);
  4.  
  5. error_reporting(E_ALL|E_STRICT);
  6.  
  7. date_default_timezone_set('Europe/Warsaw');
  8.  
  9. set_include_path('.' . PATH_SEPARATOR . './library' . PATH_SEPARATOR . './application/models/' . PATH_SEPARATOR . get_include_path());
  10.  
  11. $oRouter = new Zend_Controller_Router_Rewrite();
  12. $oFrontController = Zend_Controller_Front::getInstance();
  13. $oFrontController->throwExceptions(true)
  14.  ->setRouter($oRouter)
  15.  ->setControllerDirectory(array(
  16. 'default' => './application/default/controllers',
  17. 'admin' => './application/admin/controllers'
  18.  ))
  19.  ->dispatch();
  20. ?>

i działa bez problemów smile.gif

Pozdrawiam (;


--------------------
[workstation] PHPStorm, Apache 2/nginx, php 5.3/5.4, MySQL 5.5/5.6
[employers] Infor S.A., Gadu-Gadu S.A., Redefine, HBM, KnpLabs
Go to the top of the page
+Quote Post
phpion
post
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Dzięki za odpowiedź.

Od wczoraj tymczasowo __autoload.php wygląda w ten sposób:
  1. <?php
  2. function __autoload($class) {
  3. @include_once(str_replace('_', '/', $class).'.php');
  4. }
  5. ?>

Nie jest to zbyt sympatyczne rozwiązanie ale jak na razie działa.

Nie bardzo wiem o co chodzi Ci z tym psuciem w __autoload.php. Przy poprzednim projekcie z wykorzystaniem ZF na bank używałem autoload (bez @ i z require_once) i mój front controller wyglądał jak ten podany w pierwszym poście (tego jestem pewien na 90%). Nie wiem co pominąłem...

pion
Go to the top of the page
+Quote Post
nevt
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


może dodaj w __autoload() kropkę '.' na początku scieżki:
  1. <?php
  2. @include_once('./'.str_replace('_', '/', $class).'.php');
  3. ?>

wiele serwerów nie ma ustawionego bieżącego folderu na ścieżce wyszukiwania...


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 05:31