THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,

J'ai crée un site (Thélia 2, évidemment) sur mon VPS. Maintenant qu'il est (quasi) finalisé, je souhaite le transférer sur mon offre Pro OVH. J'ai transféré les fichiers et la bdd et modifié les paramètres du fichier 'local/config/database.yml'

J'obtiens une page blanche(pas de messages d'erreur php, même avec le .ovhconfig en 'développement'). Je suppose (j'en suis sur en fait) qu'il y a d'autres fichiers de config, notamment pour les paths. Je pense aussi que ce n'est pas la bonne méthode et qu'il faut faire appel à un script pour faire ça proprement, voire réinstaller complètement Thélia 2 et réimporter les données ? Bref, je n'ai pas trouvé d'info sur la procédure adéquat...

Si quelqu'un peut m'aider smile Merci d'avance !

Offline


Page blanche = erreur PHP

Regarde dans le fichier de log d'erreur Apache, ou tente d’accéder au site en utilisant index_dev.php. Tu aura à ajouter dans index _dev.php ton adresse IP à la liste des IP autorisées.


OpenStudio Toulouse

Offline


Voici la sortie avec index_dev.php

Whoops, looks like something went wrong.

1/1FatalErrorException: Error: Call to a member function getMethod() on a non-object in /home/monsite/www/path/cache/dev/ProjectUrlMatcherrouter_Front.php line 43
in /home/monsite/www/path/cache/dev/ProjectUrlMatcherrouter_Front.php line 43

Offline


Il te faut supprimer le contenu des caches de dev et de prod, c'est à dire tout ce qui se trouve dans cache/dev et cache/prod.

Vérifie de plus que tu es bien en PHP 5.4


OpenStudio Toulouse

Offline


C'est fait, mais dès que je rafraichis la page, tous les fichiers reviennent et le message d'erreur aussi, de facto.

Ma procédure de transfert est-elle correcte ? N'y a-t-il pas d'autres fichiers à modifier que local/config/database.yml ?

.htaccess

SetEnv PHP_VER 5_4
SetEnv REGISTER_GLOBALS 0

.ovhconfig

app.engine=php
app.engine.version=5.4
http.firewall=none
environment=development

Last edited by anti-conformiste (21-06-2014 16:57:15)

Offline


Si je supprime toutes les lignes avec la fonction GetMethod, le site apparait.

Mais certaines parties du sites risquent de ne plus fonctionner...à quoi sert ce fichier 'ProjectUrlMatcherrouter_Front.php' ?

        // customer.create.process
        if ($pathinfo === '/register') {
            if ($this->context->getMethod() != 'POST') {
                $allow[] = 'POST';
                goto not_customercreateprocess;
            }

            return array (  '_controller' => 'Front\\Controller\\CustomerController::createAction',  '_view' => 'register',  '_route' => 'customer.create.process',);
        }
        not_customercreateprocess:

        // customer.login.process
        if ($pathinfo === '/login') {
            if ($this->context->getMethod() != 'POST') {
                $allow[] = 'POST';
                goto not_customerloginprocess;
            }

            return array (  '_controller' => 'Front\\Controller\\CustomerController::loginAction',  '_view' => 'login',  '_route' => 'customer.login.process',);
        }
        not_customerloginprocess:

        // customer.password.retrieve.process
        if ($pathinfo === '/password') {
            if ($this->context->getMethod() != 'POST') {
                $allow[] = 'POST';
                goto not_customerpasswordretrieveprocess;
            }

            return array (  '_controller' => 'Front\\Controller\\CustomerController::newPasswordAction',  '_view' => 'password',  '_route' => 'customer.password.retrieve.process',);
        }
        not_customerpasswordretrieveprocess:

        // customer.logout.process
        if ($pathinfo === '/logout') {
            return array (  '_controller' => 'Front\\Controller\\CustomerController::logoutAction',  '_route' => 'customer.logout.process',);
        }

        if (0 === strpos($pathinfo, '/a')) {
            if (0 === strpos($pathinfo, '/account')) {
                if (0 === strpos($pathinfo, '/account/update')) {
                    // customer.update.view
                    if ($pathinfo === '/account/update') {
                        if (!in_array($this->context->getMethod(), array('GET', 'HEAD'))) {
                            $allow = array_merge($allow, array('GET', 'HEAD'));
                            goto not_customerupdateview;
                        }

                        return array (  '_controller' => 'Front\\Controller\\CustomerController::viewAction',  '_view' => 'account-update',  '_route' => 'customer.update.view',);
                    }
                    not_customerupdateview:

                    // customer.update.process
                    if ($pathinfo === '/account/update') {
                        if ($this->context->getMethod() != 'POST') {
                            $allow[] = 'POST';
                            goto not_customerupdateprocess;
                        }

                        return array (  '_controller' => 'Front\\Controller\\CustomerController::updateAction',  '_view' => 'account-update',  '_route' => 'customer.update.process',);
                    }
                    not_customerupdateprocess:

                }

                if (0 === strpos($pathinfo, '/account/password')) {
                    // customer.password.change.process
                    if ($pathinfo === '/account/password') {
                        if ($this->context->getMethod() != 'POST') {
                            $allow[] = 'POST';
                            goto not_customerpasswordchangeprocess;
                        }

                        return array (  '_controller' => 'Front\\Controller\\CustomerController::updatePasswordAction',  '_view' => 'account-password',  '_route' => 'customer.password.change.process',);
                    }
                    not_customerpasswordchangeprocess:

                    // customer.password.change.view
                    if ($pathinfo === '/account/password') {
                        if (!in_array($this->context->getMethod(), array('GET', 'HEAD'))) {
                            $allow = array_merge($allow, array('GET', 'HEAD'));
                            goto not_customerpasswordchangeview;
                        }

                        return array (  '_controller' => 'Thelia\\Controller\\Front\\DefaultController::noAction',  '_view' => 'account-password',  '_route' => 'customer.password.change.view',);
                    }
                    not_customerpasswordchangeview:

                }

Last edited by anti-conformiste (23-06-2014 20:36:04)

Offline


Pas d'idée  ?

Offline


Refait la manipulation de roadster31

roadster31 wrote:

Il te faut supprimer le contenu des caches de dev et de prod, c'est à dire tout ce qui se trouve dans cache/dev et cache/prod.

Et supprime les dossiers web/cache et web/assets

Offline


Merci pour ta réponse, mais le problème reste entier :

FatalErrorException: Error: Call to a member function getMethod() on a non-object in /home/monsite/www/path/cache/dev/ProjectUrlMatcherrouter_Front.php line 43

Y'a pas un soucis avec le path ...?

Last edited by anti-conformiste (25-06-2014 11:36:44)

Offline


Non, il faudrait voir pourquoi le context est null... Tu ne peux pas supprimer du code en espérant que ça marche quand même.


OpenStudio Toulouse

Offline


oui, bien sur... quelle piste dois-je creuser ?

Pour info, en installant en local les fichiers que j'ai déployé chez OVH, je ne rencontre aucun problème.

Last edited by anti-conformiste (25-06-2014 13:19:40)

Offline


oui, bien sur... quelle piste dois-je creuser ?

Je ne sais pas.

Le RequestContext est null, et là, comme ça, je ne peux pas deviner pourquoi. Sans doute un problème de configuration de ton hébergement.

D'autres ont des idées ?


OpenStudio Toulouse

Offline


Créer une page "test_it.php" dans le dossier web avec un juste comme code PHP

phpinfo()

Cela devrait permettre de vérifier la version de PHP et la présence des extensions nécessaires à THELIA.

http://doc.thelia.net/en/documentation/ … ation.html

As-tu essayer de vider le cache en ligne de commande ?

Offline


Merci pour votre aide.

Pour le phpinfo, j'ai commencé par la, j'ai vérifié toutes les dépendances, c'est ok :

PHP Version 5.4.29

compilé notamment avec les extensions suivantes :

PDO_Mysql
mcrypt
intl
gd
curl
calendar

safe_mode off
memory_limit 512Mo
post_max_size 64Mo
upload_max_filesize  64Mo

Pour le cache :

monsite@ssh1.media.ha.ovh.net ~/www/path $ /usr/local/bin/php.ORIG.5_4 -n Thelia cache:clear
Clearing cache in /home/monsite/www/path/cache//dev directory
/home/monsite/www/path/cache//dev cache directory cleared successfully
Clearing cache in /home/monsite/www/path/web/assets directory
/home/monsite/www/path/web/assets cache directory cleared successfully
X-Powered-By: PHP/5.4.6
Content-type: text/html

monsite@ssh1.media.ha.ovh.net ~/www/path $ 

Last edited by anti-conformiste (25-06-2014 18:59:47)

Offline


Oura, problème résolu. A force de tout essayer...

OVH recommande un fichier .ovhconfig paramètré ainsi :
https://www.ovh.com/fr/g1175.activer_lo … ualise_ovh

app.engine=php
app.engine.version=5.4
http.firewall=none
environment=production

J'ai commenté, en désespoir de cause et pour éliminer les pistes la première ligne et tout rentre dans l'ordre :

# app.engine=php
app.engine.version=5.4
http.firewall=none
environment=production

Je n'ai aucune idé du pourquoi ni du comment, j'avais suivi ces recommandations d'OVH, à ne pas suivre à la lettre donc... :
https://www.ovh.com/fr/g1175.activer_lo … ualise_ovh

Merci encore de vous être penché sur mon cas.

Last edited by anti-conformiste (25-06-2014 19:32:05)