Donc, voici mon code:Problème d'économie archive zip dité (docx)
<?php
$zip = new ZipArchive;
if ($zip->open('test.docx') === TRUE) {
$xmlString = $zip->getFromName('word/document.xml');
$xmlString = str_replace('$FIRST_AND_LAST_NAME', 'John Doe', $xmlString);
$zip->addFromString('word/document.xml', $xmlString);
echo 'ok';
$zip->close();
} else {
echo 'failed';
}
Son but est simple. Il ouvre un fichier test.docx, recherche toutes les occurrences d'une chaîne "$ FIRST_AND_LAST_NAME" et les remplace par "John Doe".
Cela fonctionne parfaitement sur mon serveur de développement Windows (la chaîne "John Doe" est dans le docuemnt quand je l'ouvre).
Cela ne fonctionne pas sur mon serveur de production Lunux (la chaîne "$ FIRST_AND_LAST_NAME" est toujours présente, il n'y a pas de "John Doe").
Il n'y a pas d'erreur ou de remarque, le "ok" est imprimé sans erreur. J'ai vérifié que le fichier test.docx avait les privilèges définis sur 777.
Pas d'avertissement? Le rapport d'erreur est-il activé? Est-ce que 'close()' retourne 'true'? –
Avez-vous essayé d'afficher le contenu de $ xmlString après son extraction? Pourrait être l'échec de l'extraction sur le côté Linux des choses. str_replace ne sera pas en colère contre vous et échouera soudainement sans raison, donc très probablement son entrée (le $ xmlString) n'est pas ce que vous attendez qu'il soit. –
@Pekka Je viens de remarquer que $ zip-> close() renvoie false. –