Jump to content

[Résolu] Page blanche back office erreur smarty PS 1.6.0.6


Recommended Posts

Bonjour,

 

J'ai un problème de pages blanches sur mon back office ainsi que sur le front office.

 

Sur le back office toutes les pages sont touchées, sur le front office, seules les pages prosuits sont impactées (enfin pour l'instant, lol).

 

J'ai activer le mode debug pour voir l'erreur, il semblerait que ce soit un problème Smary.

 

Voici l'erreur: (enfin une partie seulement car j'ai un doute sur la sécurité de l'afficher en entier)

 

Fatal error: Uncaught exception 'SmartyException' with message 'unable to write file  ... tools/smarty/sysplugins/smarty_internal_write_file.php on line 44

 

Je suis allée voir ce fameux fichier, à partir de la ligne 40 j'ai ceci:

// write to tmp file, then move to overt file lock race condition
        $_tmp_file = $_dirpath . DS . uniqid('wrt', true);
        if (!file_put_contents($_tmp_file, $_contents)) {
            error_reporting($_error_reporting);
            throw new SmartyException("unable to write file {$_tmp_file}");
            return false;
        }

A noter qu'hier j'ai fait la mise à jour du module Paypal et que l'erreur n'apparait que sur mon site en prod, celui en local est ok.

 

Quelqu'un peut m'aider à résoudre ce problème?

Merci d'avance.

 

Ps le site est là: http://www.lafilacroche.fr/index.php

Edited by bcd (see edit history)
Link to comment
Share on other sites

Avez-vous essayé de vider votre cache smarty ?

Désactivez le module Paypal (en renommant le dossier modules/paypal par autre chose) pour voir si c'est lui qui cause ce problème.

 

edit : apparemment Presta n'a pas les droits pour ecrire un fichier.

qu'y a-t-il après unable to write file ..." ?

Edited by ChDUP (see edit history)
Link to comment
Share on other sites

Bonjour et merci pour votre aide.

 

Y a-t-il un autre moyen de vider le cache smarty qu'en passant par le back office ? (Page blanche là aussi)

 

Du coup pas moyen de désactiver Paypal non plus.

Si je vire tous les fichiers Paypal par ftp? Bonne ou mauvaise idée ?

 

Voilà mon fichier complet:

<?php
/**
 * Smarty write file plugin
 *
 * @package Smarty
 * @subpackage PluginsInternal
 * @author Monte Ohrt
 */

/**
 * Smarty Internal Write File Class
 *
 * @package Smarty
 * @subpackage PluginsInternal
 */
class Smarty_Internal_Write_File {

    /**
     * Writes file in a safe way to disk
     *
     * @param string $_filepath complete filepath
     * @param string $_contents file content
     * @param Smarty $smarty    smarty instance
     * @return boolean true
     */
    public static function writeFile($_filepath, $_contents, Smarty $smarty)
    {
        $_error_reporting = error_reporting();
        error_reporting($_error_reporting & ~E_NOTICE & ~E_WARNING);
        if ($smarty->_file_perms !== null) {
            $old_umask = umask(0);
        }

        $_dirpath = dirname($_filepath);
        // if subdirs, create dir structure
        if ($_dirpath !== '.' && !file_exists($_dirpath)) {
            mkdir($_dirpath, $smarty->_dir_perms === null ? 0777 : $smarty->_dir_perms, true);
        }

        // write to tmp file, then move to overt file lock race condition
        $_tmp_file = $_dirpath . DS . uniqid('wrt', true);
        if (!file_put_contents($_tmp_file, $_contents)) {
            error_reporting($_error_reporting);
            throw new SmartyException("unable to write file {$_tmp_file}");
            return false;
        }
        
        /*
         * Windows' rename() fails if the destination exists,
         * Linux' rename() properly handles the overwrite.
         * Simply unlink()ing a file might cause other processes 
         * currently reading that file to fail, but linux' rename()
         * seems to be smart enough to handle that for us.
         */
        if (Smarty::$_IS_WINDOWS) {
            // remove original file
            @unlink($_filepath);
            // rename tmp file
            $success = @rename($_tmp_file, $_filepath);
        } else {
            // rename tmp file
            $success = @rename($_tmp_file, $_filepath);
            if (!$success) {
                // remove original file
                @unlink($_filepath);
                // rename tmp file
                $success = @rename($_tmp_file, $_filepath);
            }
        }

        if (!$success) {
            error_reporting($_error_reporting);
            throw new SmartyException("unable to write file {$_filepath}");
            return false;
        }

        if ($smarty->_file_perms !== null) {
            // set file permissions
            chmod($_filepath, $smarty->_file_perms);
            umask($old_umask);
        }
        error_reporting($_error_reporting);
        return true;
    }

}

?>

J'ai lu par ci par là que ça peut être un problème de droits d'écriture mais je ne sais pas trop où modifier ça (à la ligne 37 du fichier ci-dessus, il y a 0777, est-ce que c'est bien le droit d'écriture? ou c'est dans un autre fichier?)

 

Je suis en train de télécharger tous mes fichiers pour refaire une installation locale et la tester vu que celle que j'ai déjà ne reproduit pas le bug. (mais elle n'est plus tout à fait identique au site en prod avec tous les tests que j'ai pu faire)

Link to comment
Share on other sites

oui il y a à priori un problème de droits d'ecriture, voir mon edit precedent.

Pour desactiver Paypal, renommer son dossier comme expliqué ci-dessus.

Pour vider le cache : vider tout ce qui se trouve dans cache/smarty/compile (de tete)

sauf le index.html

Link to comment
Share on other sites

Pardon, je n'avais pas lu correctement pour désactiver Paypal sans le BO.

 

Paypal semble hors de cause, activé ou non le problème est toujours là.

 

J'ai vidé tout ce qui se trouvait dans cache/smarty/compile comme indiqué et j'ai retrouvé mon BO, ouf!

 

Mais maintenant c'est tout le FO qui est en page blanche, si je vide le cache (pourtant désactivé) depuis le BO, le FO revient quelques instants puis se met à nouveau en page blanche.

 

J'ai cherché de la doc concernant les droits d'écritures mais c'est un peu flou pour moi, où doit-on les modifier et comment?

 

Autre question: comment ces droits d'écriture ont pu se modifier? ça fait un peu plus d'un an que le site tourne sans problème.

(je voudrais bien comprendre le schmilblick).

 

A savoir que je ne reproduis pas le bug avec ma copie toute fraiche en local (xampp).

Le site en prod est sur un serveur mutualisé chez Nuxit.

Edited by bcd (see edit history)
Link to comment
Share on other sites

Ça a l'air de refonctionner mais je ne sais pas vraiment le pourquoi du comment.

 

J'ai juste activé / désactivé tous les systèmes de caches (smarty ccc) plusieurs fois en vidant le cache à chaque fois.

 

Je vais aller me coucher plus zen. J'espère juste que je n'aurais pas une mauvaise surprise demain, lol! Cette bizarrerie de droit d'écriture qui change tout seul m'inquiète un peu.

 

Encore merci :wub: .

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...