Zend Framework su Plesk

Ho realizzato un prodotto con zend framework, ora che e' il momento di metterlo online scopro che il mio cliente ha un vps con plesk dove non posso modificare le informazioni del virtual host! :S

In locale ho una configurazione di questo tipo:

<VirtualHost *:80>

   DocumentRoot "/path/project_name/public"

   ServerName project_name.lvh.me


   # This should be omitted in the production environment

   SetEnv APPLICATION_ENV development


   <Directory "/path/project_name/public">

       Options Indexes MultiViews FollowSymLinks

       AllowOverride All

       Order allow,deny

       Allow from all

   </Directory>


</VirtualHost>

Ovviamente la mia idea era di modificare le config del vh modificando i giusti path, modificando la label develoment con production e ServerName, ma questa cosa non mi é permessa! :S

Qualcuno di voi mi sa consigliare come far girare un progetto realizzato con ZF su un ambiente gestito da Plesk?

Grazie

Soluzione

Nel mio caso specifico non ho i permessi di spostare la struttura del progetto nella directory precedente alla document root, quindi sono costretto a piazzare l'intero progetto all'interno della document root, allora per far funzionare zend framework faccio quando segue:

creare un file .htaccess nella propria document root

RewriteEngine On
RewriteRule !^public/ /public%{REQUEST_URI} [L,R=301]

modificare il proprio file .htaccess all'interno della directory public del progetto come segue:

SetEnv APPLICATION_ENV production

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

a questo punto potrete visualizzare il vostro progetto nel modo corretto!   

inviato 4 anni fa
JellyBelly
modificato 4 anni fa
Non ho mai usato pannelli plesk...gli htaccess li puoi usare comunque?Mario Santagiuliana 4 anni fa
ad essere sincero spero di si! :D Come posso fare per accertarmene? :DJellyBelly 4 anni fa
Prova ad fare intanto un banale redirect di un file con htaccessMario Santagiuliana 4 anni fa
Funziona! :D E ora?JellyBelly 4 anni fa
X 0 X

Se nel tuo hosting hai una directory di nome public_html o comunque public posiziona li il contenuto public del tuo progetto zend framework. Mantieni invece le altre directory nella directory radice di public, proprio come nel tuo progetto.

Controlla poi che in public vi sia il file htaccess zend framework (il file generalmente viene creato in automatico con zend tools). Deve essere una cosa simile a questa:

SetEnv APPLICATION_ENV production

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

Non è dunque necessario configurare un virtual host.

Se invece non hai la possibilità di proteggere la directory application, cioè metterla al di fuori della directory che apache rende visibile sul web, devi copiare tutto il tuo progetto all'interno della directory "pubblica", fare un redirect in modo che si venga reindirizzati all'index.php all'interno di public, mettere un htaccess che protegga l'accesso alla directory application e impostare nell'htaccess in public il RewriteBase.

--Aggiunta--

Il rewritebase:

RewriteBase /public

Da inserire dopo il rewriteengine

risposto 4 anni fa
Mario Santagiuliana
modificato 4 anni fa
il mio caso è il secondo da te descritto, nel senso che non posso scrivere ne copiare il mio progetto nella directory padre di httpdocs! :S Non ho capito bene come mi dovrei comportare. Potresti descrivermelo in maniera più dettagliata? Ho messo tutto il mio progetto dentro httpdocs! Ora? Come deve essere composto il file htaccess dentro httpdocs e come deve essere quello dentro public? GrazieJellyBelly 4 anni fa
Dentro la directory public devi mettere l'htaccess che ti ho indicato. E' lo stesso che si crea con zend tools. Inserisci il rewritebase per public/ e poi con un htaccess proteggi application e library.Mario Santagiuliana 4 anni fa
e ma come? se te lo sto chiedendo e' perche' non l'ho mai fatto e non so che significa "Inserisci il rewritebase per public/" e nemmeno "htaccess proteggi application e library" :SJellyBelly 4 anni fa
Devi solo aggiungere l'istruzione in più che ti ho indicato. La documentazione è più che esaustiva http://httpd.apache.org/docs/current/mod/mod_rewrite.html modifico la risposta per semplificarti un po' la cosa...ma un po' di impegno a documentarsi non farebbe male...Mario Santagiuliana 4 anni fa
Lo so tu hai perfettamente ragione a sentirti frustrato, ma non ho mai avuto a che fare con gli htaccess e quindi ho serie difficolta' purtroppo. Ti prego di essere paziente! Ho seguito le tue indicazioni e ho fatto come qui postato: http://codepad.org/RWd6jCxH ma ricevo questo errore: "Forbidden: You do not have permission to access this document." Capisco benissimo che questo modo di postare codice non e' corretto e non serva a nessuno in futuro, ma una volta completata la mia impresa giuro di sistemare il topic principale in modo che possa essere di aiuto a utenti futuri!JellyBelly 4 anni fa
Hai sbagliato, hai aggiunto più istruzioni del necessario, prendi l'htaccess che ti ho dato e aggiungi solo la riga del rewritebase come da indicazione.Mario Santagiuliana 4 anni fa
Ho fatto come hai detto e mi da Internal Server Error :(JellyBelly 4 anni fa
Devi aver sbagliato qualcosa nella sintassi htaccess...Mario Santagiuliana 4 anni fa
avevi ragione! :D C'e' l'ho fatta: http://codepad.org/wJEyzLys, ma manca ancora qualcosa secondo me! :S Il portale funzione ma funzione come http://www.dominio.it/public/controller/action mentre io vorrei senza public :S Mi sono perso qualcosa?JellyBelly 4 anni fa
No, è giusto così, apri una nuova domanda specifica su questa cosa...Mario Santagiuliana 4 anni fa
Ok! Ho aggiunto la soluzione nel primo post! ;)JellyBelly 4 anni fa
X 2 X X
Effettua l'accesso o registrati per rispondere a questa domanda