J'ai essayé d'utiliser Zlib pour décompresser le fichier, mais il m'a juste dit "Data error" et m'a donné un fichier vide.Est-ce que PHP peut décompresser un fichier taz? (.tar.Z)
Voici le code que j'ai essayé:
// Open a new temp file to write new file to
$tempFile = fopen("tempFile", "w");
// Make sure tempFile is empty
ftruncate($tempFile, 0);
// Write new decompressed file
fwrite($tempFile, zlib_decode(file_get_contents($path))); // $path = absolute path to data.tar.Z
// close temp file
fclose($tempFile);
J'ai aussi essayé de le décompresser dans certaines régions, allant de .tar.Z à .tar juste un fichier. J'ai essayé d'utiliser les fonctions lzw pour enlever le .Z, mais j'étais incapable de le faire fonctionner. Y a-t-il un moyen de faire cela?
EDIT: Voici un peu plus de code que j'ai essayé. Juste pour s'assurer que le file_get_contents
fonctionnait. Je reçois toujours une "erreur de données".
$tempFile = fopen("tempFile.tar", "w");
// Make sure tempFile is empty
ftruncate($tempFile, 0);
// Write new decompressed file
$contents = file_get_contents($path);
if ($contents) {
fwrite($tempFile, gzuncompress($contents));
}
// close temp file
fclose($tempFile);
EDIT2: Je pense que la raison pour laquelle LZW ne fonctionnait pas parce que le contenu du fichier .tar.Z ressemble à ceci:
��3dЀ��0p���a�
H�H��ŋ3j��@�6l�
Les fonctions LZW J'ai essayé à la fois l'utilisation Caractères ASCII dans leurs dictionnaires. Quel genre de personnages sont-ils?
Voulez-vous que cela soit fait par php pur? Courez-vous dans un serveur Linux? Avez-vous la possibilité d'exécuter 'exec' ou' shell_exec'? – Kishor
Je ne peux pas utiliser 'exec' ou' shell_exec', et je préfère utiliser PHP pur. – UndoingTech
ne chaîner des fonctions comme ça. vérifiez si 'file_get_contents()' était réellement capable de lire ce fichier. Si ce n'est pas le cas, il retournera boolean 'false', qui sera ensuite transmis aveuglément à zlib_decode(), qui ne peut bien sûr pas décoder un' false' - booléen false dans un contexte de chaîne est une chaîne vide. –