Je compile actuellement une classe en PHP qui génère des documents PDF en utilisant l'application de ligne de commande WKHTMLTOPDF. Pour ce faire, j'utilise un appel à shell_exec pour appeler l'exécutable WKHTMLTOPDF. Cependant, cet appel particulier ne semble pas être exécuté; il renvoie NULL presque instantanément.shell_exec() en PHP n'exécute pas ma commande spécifique
Un petit test je l'ai fait m'a donné les résultats suivants:
var_dump(shell_exec('ping nu.nl'));
// This prints a string, containting the expected output of the ping command
var_dump(shell_exec('"c:/wkhtmltopdf/wkhtmltopdf.exe" --orientation "Landscape" --page-size "A2" --margin-top "25mm" --margin-left "20mm" --margin-bottom "20mm" --margin-right "20mm" "http://www.nu.nl/" "C:/Temp/1280310218.pdf"'));
// This prints NULL
Ainsi, shell_exec()
semble fonctionner, aussi safe_mode
est désactivé, et coller la commande complète dans cmd.exe ne exécutez la commande correctement.
Si le problème ne se trouve pas dans l'un des cas ci-dessus (mode sans échec, commande erronée ou shell_exec()
lui-même), que peut-il être d'autre? Tout ce que je peux penser est un problème de droits d'utilisateur, mais à la fois l'exécutable et le répertoire dans lequel il se trouve ont des paramètres d'accès complet pour chaque groupe d'utilisateurs sur mon système. (Note: Bien que je développe sur une machine Windows, ce code fonctionnera sur un serveur Linux en production.Par conséquent, les solutions Windows seulement ne sont pas ce que je cherche, à moins bien sûr que ce problème tourne lui-même out être lié à Windows)
Avez-vous essayé d'écrire 'manuellement' dans 'c:/temp /' pour vous assurer que le propriétaire du processus php a le droit d'y écrire? –
@Dennis Haarbrink: Juste testé cela, et cela fonctionne parfaitement. Mais même si ce n'était pas le cas, je m'attendrais à voir cela dans la chaîne de résultats retournée par 'shell_exec()', puisque WKHTMLTOPDF m'avertit si les fichiers ne sont pas lisibles/inscriptibles. – Duroth