Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt nie widzi Zend/Application.php
Forum PHP.pl > Forum > PHP
mastersaygon
Borykam się z pewnym problemem od dwóch dni i nie mogę go rozwiązać, może Wam wpadnie coś do głowy, podczas wywoływania aplikacji przez przeglądarkę zostaję uraczony poniższym error logiem:

Cytat
[Wed May 13 14:23:48.897534 2015] [:error] [pid 13751] [client 127.0.0.1:43540] PHP Warning: require_once(Zend/Application.php): failed to open stream: No such file or directory in /opt/xxxx/manager/src/backend/version/developer/htdocs/index.php on line 6
[Wed May 13 14:23:48.897637 2015] [:error] [pid 13751] [client 127.0.0.1:43540] PHP Stack trace:
[Wed May 13 14:23:48.897662 2015] [:error] [pid 13751] [client 127.0.0.1:43540] PHP 1. {main}() /opt/xxxx/manager/src/backend/version/developer/htdocs/index.php:0
[Wed May 13 14:23:48.897696 2015] [:error] [pid 13751] [client 127.0.0.1:43540] PHP Fatal error: require_once(): Failed opening required 'Zend/Application.php' (include_path='.:/opt/xxxx/manager/www/backend/dev/dev1/library/:/opt/xxxx/manager/external/library/') in /opt/xxxx/manager/src/backend/version/developer/htdocs/index.php on line 6
[Wed May 13 14:23:48.897710 2015] [:error] [pid 13751] [client 127.0.0.1:43540] PHP Stack trace:
[Wed May 13 14:23:48.897724 2015] [:error] [pid 13751] [client 127.0.0.1:43540] PHP 1. {main}() /opt/xxxx/manager/src/backend/version/developer/htdocs/index.php:0


Jestem pewny że ścieżka do pliku jest prawidłowa, prawo do odczytu również jest nadane prawidłowo a mimo to plik nie jest widziany przez skrypt, macie jakieś propozycje na rozwiązanie tej zagadki?

Plik Application.php znajduje się w /opt/xxxx/manager/external/library/Zend
viking
Masz ustawione include_path? Przykład https://github.com/xorock/ZF1-Skeleton-PHPT...r/www/index.php
mastersaygon
Tak, mam ustawione.
viking
Pokaż kawałek kodu gdzie to robisz. Plik application.php jest oczywiście w folderze /opt/xxxx/manager/external/library/Zend? Bo napisaleś jakby bezpośrednio.
mastersaygon
Wygląda to tak:
  1. <?php
  2. namespace Maintain;
  3.  
  4. $_ = $_SERVER['_'];
  5.  
  6.  
  7. define('LOCAL', realpath(dirname(__FILE__)));
  8.  
  9. realpath(LOCAL . '/libs/') . PATH_SEPARATOR . LOCAL . PATH_SEPARATOR . realpath(LOCAL . '/../library/')
  10. );


Co do Twojego pytania to zgadza się plik application.php znajduje się w opt/xxxx/manager/external/library/Zend.
Już poprawiłem w pierwszym poście.
viking
Daj tam gdzieś w kodzie jeszcze przed wywołaniem require_once 'Zend/Application.php';
mastersaygon
To o czym piszesz @viking mam w innym pliku, co więcej do poniedziałku wszystko działało poprawnie, zastanawiam się co mogłem po drodze zrobić aby przyczynić się do obecnej sytuacji ale nie przypominam sobie abym robił coś istotnego na serwerze aby cokolwiek uszkodzić.
Plik w którym posiadam require_once 'Zend/Application.php'; wygląda tak:
  1. <?php
  2. define('APP_START', microtime(true));
  3.  
  4. require_once '../zend_config.php';
  5. require_once 'Zend/Application.php';
  6. require_once 'Zend/Config/Ini.php';
  7.  
  8. $config = new Zend_Config_Ini(APP_PATH . '/configs/application.ini', 'PRODUCTION', true);
  9. $subconfig = new Zend_Config_Ini(DATA_PATH . '/private/configs/custom.ini', 'PRODUCTION');
  10. $config->merge($subconfig);
  11.  
  12. $application = new Zend_Application('PRODUCTION', $config);
  13. $application->bootstrap()->run();
salfunglandyare
A jesteś pewien, że skrypt ma uprawnienia do czytania tego pliku? sprawdź uprawnienia każdego z katalogów /opt/xxxx/manager/external/library/Zend oraz samego pliku Application.php

//edit, proces apache (user apache/httpd/www/www-data, jakkolwiek u Ciebie się to nazywa) powinien mieć uprawnienie X (execute) dla każdego folderu oraz R (read) dla Application.php
mastersaygon
Jestem pewny na 100% że użytkownik/grupa mają prawo odczytu i wykonania dla tych katalogów i plików.

Kod:
  1. <?php echo exec('whoami'); ?>

zwraca mi www-data, zweryfikowałem uprawnienia dla tego użytkownika, wszystko wydaje się być w porządku.
Pyton_000
Wrzuć get_include_path w pliku w którym includujesz Zend i sprawdź czy aby na pewno jest dobrze ustawiona zmienna PATH
mastersaygon
  1. echo ini_get('include_path');

zwraca mi
Cytat
.:/opt/xxxx/manager/www/backend/dev/dev1/library/:/opt/xxxx/manager/external/library/


Stało się coś dziwnego, mimo braku dużej ingerencji w zasoby, prócz dopisania powyższej linijki kodu wszystko zaczęło działać ponownie... Przecież ta linijka kodu nie mogła niczego zmienić...

Niemniej dziękuje Wam za poświęcony czas i rady!
Pyton_000
Mogła o ile był w jakimś cache albo cóś smile.gif
mastersaygon
W takim razie zwracam honory i jeszcze raz dziękuję smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.