[ZF] Include na .htaccess

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • United
  • Registratie: Maart 2004
  • Laatst online: 06-08 16:16
De include van Zend/Loader/Autoloader.php uit de Zend Framework directory werkte toen ik nog teste met het IP adres (http://12.12.123.123/~user/) nog prima (er was een htaccess die de RewriteBase /~user/ had). Nu is echter de domeinnaam actief en heb ik de RewriteBase op / gezet zodat ik de domein kan gebruiken. Echter als ik nu de site laad krijg ik een include error.
Er is niks aan de server verder verandert alleen de domeinnaam en de RewriteBase, echter met de base op / kan ik ook niet testen met het IP adres. En als ik /~user/ als Base gebruik krijg ik op de domein een 500 server error.

Kan iemand mij helpen om dit probleempje op te lossen?

Acties:
  • 0 Henk 'm!

  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

Wat zegt je apache error log?

On track


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Wat heeft de rewrite base te maken met je includes in php dan? Volgens mij gaat de rewrite base alleen over de mod_rewrite engine van apache, niks meer en niks minder.

Zelf gebruik ik nooit een rewrite base voor ZF projecten trouwens, wat gebeurt er als je die weghaalt?

Acties:
  • 0 Henk 'm!

  • United
  • Registratie: Maart 2004
  • Laatst online: 06-08 16:16
Cartman! schreef op donderdag 25 juni 2009 @ 16:38:
wat gebeurt er als je die weghaalt?
Dan gaat hij op standaard wat dus gelijk staat aan /

Het is inderdaad niet de htaccess, want als ik direct index.php aanroep dan kan ik via de IP zonder problemen kijken (geen foutmelding), echter via de domeinnaam krijg ik wel een melding:

Warning: require_once(Zend/Loader/Autoloader.php) [function.require-once]: failed to open stream: No such file or directory in /home/user/domains/website/application/Bootstrap.php on line 60.

Acties:
  • 0 Henk 'm!

  • iH8
  • Registratie: December 2001
  • Laatst online: 17-06-2024

iH8

je bootstrap kan je library niet vinden, je moet je library path toevoegen aan het include path

[ Voor 41% gewijzigd door iH8 op 25-06-2009 17:15 ]

Aunt bunny is coming to get me!


Acties:
  • 0 Henk 'm!

  • United
  • Registratie: Maart 2004
  • Laatst online: 06-08 16:16
De bootstrap kan wel de library vinden als ik via de IP de site benader, dus dat is het niet.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Dan zit het denk ik niet in je code of htaccess maar in de config van je server. Komt dat ip ergens anders op uit dan de domeinnaam?

Acties:
  • 0 Henk 'm!

  • United
  • Registratie: Maart 2004
  • Laatst online: 06-08 16:16
Via de IP kan ik dezelfde bestanden bereiken als via de domein

Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 15:03
wat is je include_path in de werkende versie en de niet werkende versie? Zijn er verschillen in de document root? Gebruik je verschillende webserver configuraties?

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 00:16

Matis

Rubber Rocket

Je moet toch je absolute path includen;

iets in de trant van C:/domein.nl/wwwroot/ZendFramework/.....

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • United
  • Registratie: Maart 2004
  • Laatst online: 06-08 16:16
beide methodes roepen precies hetzelfde script aan. Beide includen dus dezelfde bestanden (althans dat zouden ze moeten doen).

de Include_paths kloppen en werken dus ook voor de IP variant

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
United schreef op vrijdag 26 juni 2009 @ 00:02:
beide methodes roepen precies hetzelfde script aan. Beide includen dus dezelfde bestanden (althans dat zouden ze moeten doen).
Met het herhalen van deze opmerkingen schiet je nooit op. Het is duidelijk dat beide methodes zich momenteel niet hetzelfde gedragen, anders was dit topic er niet. ;) Kap dus met dat volhouden, en ga eens echt debuggen. ;)

Bijvoorbeeld, geef aub eens de include paths direct voor het punt waar het fout gaat. Controleer of je met een van die paths + het relatieve pad wel op de juiste plek uitkomt, etc. etc.

En last but not least, meld voor de compleetheid de letterlijke error ipv 'een include error'.

{signature}


Acties:
  • 0 Henk 'm!

  • United
  • Registratie: Maart 2004
  • Laatst online: 06-08 16:16
De error die ik krijg:

Warning: require_once(Zend/Loader/Autoloader.php) [function.require-once]: failed to open stream: No such file or directory in /home/user/domains/domein/application/Sigmasite.php on line 60

Fatal error: require_once() [function.require]: Failed opening required 'Zend/Loader/Autoloader.php' (include_path='/usr/share/library:
/home/user/domains/domein/application:
/home/user/domains/domein/application/library:
/home/user/domains/domein/application/modules/models:
.:
/usr/local/lib/ZendFramework-1.8.3/library:
/usr/local/lib/ZendFramework-1.8.3/extras/library') in /home/user/domains/domein/application/Bootstrap.php on line 60


Ik heb naar de include_paths gekeken en als ik deze print, dan krijg ik bij beide benaderingen dezelfde lijst (gelijk aan hierboven).
Voutloos schreef op vrijdag 26 juni 2009 @ 07:39:Controleer of je met een van die paths + het relatieve pad wel op de juiste plek uitkomt, etc. etc.
Hoe kan ik dit checken?

Acties:
  • 0 Henk 'm!

  • RAJH
  • Registratie: Augustus 2001
  • Niet online
Bestaat "/usr/local/lib/ZendFramework-1.8.3/library" nog wel? Of is deze al geupgrade naar "/usr/local/lib/ZendFramework-1.8.4/library"?

Acties:
  • 0 Henk 'm!

  • United
  • Registratie: Maart 2004
  • Laatst online: 06-08 16:16
Dit is beheerd door mijn hosting, maar aangezien de IP variant werkt. En ik maar 1 server in gebruik heb, zal dit het correcte pad zijn

==Edit==

Wat ik wel tegenkom in de phpinfo sheet bij PHP Variables:

IP benadering
_SERVER["DOCUMENT_ROOT"] /var/www/html
_SERVER["SERVER_ADMIN"] webmaster@localhost
_SERVER["SCRIPT_FILENAME"] /home/user/public_html/wwwinfo.php

Domein benadering
_SERVER["DOCUMENT_ROOT"] /home/user/domains/domein/public_html
_SERVER["SERVER_ADMIN"] webmaster@domein.nl
_SERVER["SCRIPT_FILENAME"] /home/user/domains/domein/public_html/wwwinfo.php

[ Voor 62% gewijzigd door United op 26-06-2009 09:34 ]


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Waarom ga je uit van de ZF install (nouja...install..) van je hostingpartij? Als ze upgraden ben je de zak. Gewoon zelf n mapje library neerknallen en daarheen verwijzen. Ook is het aan te raden als eerste in je include_path naar ZF te verwijzen, dat schijnt sneller te zijn met de autoloader.

En zoals al gezegd werd heb je blijkbaar een ander pad bij domein en ip terwijl je eerst maar zei dat dit t zelfde was...debuggen debuggen debuggen.

Acties:
  • 0 Henk 'm!

  • United
  • Registratie: Maart 2004
  • Laatst online: 06-08 16:16
Ik ben de enige die upgrades aanvraagt via mijn host, maar als het echt vervelend wordt stap ik inderdaad naar eigen mapje.

De volgorde kan ik dus niet aanpassen.

Hoe kan ik het pad aanpassen zodat ze beide gelijk worden?

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Waarschijnlijk heb je een mapje /home/user/domains/domein/. Waarschijnlijk staat daar je public_html map in toch? Zelf vind ik het altijd wel handig om in je index.php de autoloader al aan te zetten. Dan hoef je zelfs niet meer je Zend_Application te laden. Ik heb dan ook dit staan, wat bij jou ook moet werken:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// Define path to base of project
defined('BASE_PATH')
    || define('BASE_PATH', realpath( dirname( __FILE__ ) . '/../' ) );

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', BASE_PATH . '/application');

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path(),
)));

//Create autoloader to make autoloading possible
require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();
Met zo'n .htaccess:
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} \.(js|ico|gif|jpg|png|css|pdf)$ [OR]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
En daarnaast heb je helemaal geen RewriteBase nodig :)
United schreef op vrijdag 26 juni 2009 @ 09:43:
Ik ben de enige die upgrades aanvraagt via mijn host, maar als het echt vervelend wordt stap ik inderdaad naar eigen mapje.
Dat hoeft niet, maar is wel voor jezelf zo handig. Als de hoster een update doet zal dat toch altijd in een nieuwe map terecht komen :)
De volgorde kan ik dus niet aanpassen.

Hoe kan ik het pad aanpassen zodat ze beide gelijk worden?
Zie hierboven het voorbeeld. Je kan prima je library vóór get_include_path() zetten :)
Pagina: 1