Bonjour,

J'ai un script custom d'affichage de fichier de log.

Ce dernier fonctionne bien mais semble avoir du mal avec les encodages.

Je viens à la recherche d'idées.

Nom : Screenshot from 2022-10-10 16-40-23.png
Affichages : 162
Taille : 93,1 Ko

Comme vous pouvez le voir, le problème semble se poser sur les accents.

Je récupère le log de cette façon

Code : Sélectionner tout - Visualiser dans une fenêtre à part
$this->driverFile->fileGetContents($path)
Cette méthode est native de magento 2 dans `src/vendor/magento/framework/Filesystem/Driver/File.php`

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    /**
     * Retrieve file contents from given path
     *
     * @param string $path
     * @param string|null $flag
     * @param resource|null $context
     * @return string
     * @throws FileSystemException
     */
    public function fileGetContents($path, $flag = null, $context = null)
    {
        $filename = $this->getScheme() . $path;
        clearstatcache(false, $filename);
        $result = @file_get_contents($filename, $flag, $context);
        if (false === $result) {
            throw new FileSystemException(
                new Phrase(
                    'The contents from the "%1" file can\'t be read. %2',
                    [$path, $this->getWarningMessage()]
                )
            );
        }
        return $result;
    }
RIen de foufou donc le file get contents est natif de php.


Une idée de ce qui peut causer ça ? Une option d'encodage à rajouter probablement ?


Voilà à quoi ressemble l'appel principal

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
        try {
            $path = $this->directoryList->getPath('var').'/log/'.$logfile ;
            $fileSubContent = substr($this->driverFile->fileGetContents($path),- $nbLine * $nbCharPerLineApproximative);
            $re = '/\[\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}][[:print:]]{1,}/';
            preg_match_all($re, $fileSubContent, $contents, PREG_SET_ORDER, 0);
        } catch (FileSystemException $e) {
            var_dump($e->getMessage());
        }