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.

Comme vous pouvez le voir, le problème semble se poser sur les accents.
Je récupère le log de cette façon
$this->driverFile->fileGetContents($path)
Cette méthode est native de magento 2 dans `src/vendor/magento/framework/Filesystem/Driver/File.php`
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
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());
} |
Partager