Problema installazione Zend Framework

Salve a tutti

è la prima volta che scrivo su questo forum e spero che mi possiate aiutare perchè davvero non so dove aggrapparmi più!  :wallbash:

allora ho uno spazio web su Aruba

del tipo www.miosito.com

all'interno ho creato una cartella zend

ed ho tale struttura

+application

----models

----views

----controllers

+library

----Zend

+web_root

----- .htaccess

----- .index.php

dato che sto seguendo un libro, la mia applition non deve fare altro che visualizzare la scritta a video "Hello World"

ora il mio file .htaccess è il seguente

RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php

mentre il mio file  index.php è:

error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', true);
date_default_timezone_set('Europe/Rome');

$rootDir = dirname(dirname(__FILE__));
set_include_path($rootDir.'/library'.PATH_SEPARATOR.get_include_path());

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Debug');
Zend_Loader::loadClass('Zend_Controller_Front');

$frontController = Zend_Controller_Front::getInstance();
$frontController -> throwExceptions(false);
$frontController -> setControllerDirectory('../application/controllers');

$frontController->dispatch();

e mi da il seguente errore:

Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in /web/htdocs/www.miosito.com/home/zend/library/Zend/Controller/Dispatcher/Standard.php:242 Stack trace: #0 /web/htdocs/www.miosito.com/home/zend/library/Zend/Controller/Front.php(946): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 /web/htdocs/www.miosito.com/home/zend/web_root/index.php(37): Zend_Controller_Front->dispatch() #2 {main} thrown in /web/htdocs/www.miosito.com/home/zend/library/Zend/Controller/Dispatcher/Standard.php on line 242

Non riesco a capire ed è da più di una settimana che ci sbatto! non riesco ad andare avanti! ma dove sta l'errore ma soprattutto da cosa è causato?  :dunno:

Grazie in anticipo del vs aiuto ...  :bye:

inviato 7 anni fa
Mac
Mac
1
X 0 X

L'errore che ricevi lascia intuire che Front Controller non riesce a caricare l'Error Controller. L'Error Controller viene richiamato dal Front Controller quando quest'ultimo ha riscontrato un problema durante il dispatching della richiesta. L'Error Controller deve essere realizzato dallo sviluppatore, non è un componente dello ZF.

Per capire quale sia stato l'errore di partenza (non quello mostrato dal messaggio) puoi impostare throwExceptions(true). In questo modo se il Front Controller incontra un problema non cercherà l'Error controller ma si limiterà a mostrare l'eccezione.

 :bye:

risposto 7 anni fa
Gianni Tomasicchio
X 0 X

ok ho impostato

throwExceptions(true);

ma adesso mi da un altro errore

Class 'Zend' not found in C:\xampp\htdocs\helloworld\application\controllers\indexController.php  on line 3

scusate sono agli inizi ... abbiate pietà!  :'(

risposto 6 anni fa
Mac
Mac
1
X 0 X

Hai aperto questa discussione un bel po' di tempo fa, è rimasto tutto invariato da allora?

Puoi farci vedere il codice di indexController.php? E' li che hai l'errore.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

beh si perchè adesso ho ripreso

cmq il codice è il seguente:

<?php

Zend::LoadClass('Zend_View');

class indexController extends Zend_Controller_Action
{
   public function indexAction()
   {
      $this->view->assign('title', 'Hello World!');
   }
}

?>
risposto 6 anni fa
Mac
Mac
1
X 0 X

Carica la tua classe, questa riga:

Zend::LoadClass('Zend_View');

All'interno della tua action, indexAction in poche parole.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Ho capito che il problema è li

ma non ho capito perchè non la carica!

risposto 6 anni fa
Mac
Mac
1
X 0 X

Ah scusa, non è Zend e basta che devi usare ma zend loader:

Zend_Loader::LoadClass();

Non esiste una classe Zend e basta.

Mettila all'interno del tuo controller.

risposto 6 anni fa
Mario Santagiuliana
modificato 6 anni fa
X 0 X

ok sembra andare bene

ho creato l'error controller e quando lancio l'applicativo

mi compare la scritta "Pagina non trovata"

modificando la dicitura $frontController->throwExceptions(true)

mi compare

Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (index)' in C:\xampp\htdocs\zend\library\Zend\Controller\Dispatcher\Standard.php:242
Stack trace:
#0 C:\xampp\htdocs\zend\library\Zend\Controller\Front.php(946): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#1 C:\xampp\htdocs\zend\web_root\index.php(26): Zend_Controller_Front->dispatch()
#2 {main} thrown in C:\xampp\htdocs\zend\library\Zend\Controller\Dispatcher\Standard.php  on line 242

ma non riesco a capire dove sta l'errore!

risposto 6 anni fa
Mac
Mac
1
modificato 6 anni fa
Mario Santagiuliana
X 0 X

Puoi fornire il codice di interesse e l'albero delle directory del tuo applicativo?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

l'albero delle directory dell'applicativo l'ho segnalato all'inizio del post (cioè il primo post)

il mio IndexController è il seguente:

<?php
Zend_Loader::LoadClass('Zend_View');

class IndexController extends Zend_Controller_Action
{
   public function indexAction()
   {
      $this->view->assign('title', 'Hello World');
   }
}

?>

il file .htaccess è

RewriteEngine on
RewriteCond % {REQUEST_FILENAME} ! -f
RewriteRule *.index.php
risposto 6 anni fa
Mac
Mac
1
X 0 X
modificando la dicitura $frontController->throwExceptions(true)

Mi riferivo anche a questo...

risposto 6 anni fa
Mario Santagiuliana
X 0 X
<?php

//Setto variabili di ambiente
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', true);
date_default_timezone_set('Europe/Rome');

//Setto il percorso alla libreria
$rootDir = dirname(dirname(__FILE__));
set_include_path($rootDir.'/library'.PATH_SEPARATOR.get_include_path());

//Includo Zen / Loader
//loadClass(Zend_Debug) equivale a include 'Zend/Debug'
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Debug');
Zend_Loader::loadClass('Zend_Controller_Front');

/*Setto il controller*/


$frontController = Zend_Controller_Front::getInstance();
$frontController -> throwExceptions(true);
$frontController -> setControllerDirectory('../application/controllers');

//Avvio l'applicazione
$frontController->dispatch();
?>
risposto 6 anni fa
Mac
Mac
1
X 0 X

Prova ad utilizzare questo htaccess:

SetEnv APPLICATION_ENV production

RewriteEngine On
RewriteBase /quello_che_è
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Vedi se la situazione cambia.

Se nell'url della tua chiamata indichi sia il controller sia l'action da seguire, ottieni sempre lo stesso errore?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Perdona la mia ignoranza

ma al posto di

RewriteBase /quello_che_è

cosa dovo mettere?  :o

risposto 6 anni fa
Mac
Mac
1
X 0 X

Dovresti mettere il percorso dell'url base in cui si trova il tuo htaccess.

Esempio il tuo script si trova a questo url: www.example.com/cartella/test/script.php

Tu vuoi applicare le regole a solo il codice presente in test ma script.php si trova nel tuo server in /var/www/test/script.php allora metti:

RewriteBase /cartella/test

Per più info ti rimando alla documentazione ufficiale:

http://httpd.apache.org/docs/2.3/mod/mod_rewrite.html#rewritebase

risposto 6 anni fa
Mario Santagiuliana
modificato 6 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda