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.
Pièce jointe 626977
Comme vous pouvez le voir, le problème semble se poser sur les accents.
Je récupère le log de cette façon
Cette méthode est native de magento 2 dans `src/vendor/magento/framework/Filesystem/Driver/File.php`Code:$this->driverFile->fileGetContents($path)
RIen de foufou donc le file get contents est natif de php.Code:
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; }
Une idée de ce qui peut causer ça ? Une option d'encodage à rajouter probablement ?
Voilà à quoi ressemble l'appel principal
Code:
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()); }