je vous soumets mon pb devant lequel je suis dubitatif (je pense qu'il me manque une connaissance tout simplement !).
Je suis en WAMP 1.5.0 sous Windows. J'ai un script PHP qui produit un fichier PDF et derrière j'essaie d'executer une commande pour lancer l'impression de se document (pour que finalement l'impressionde mon doc se fasse en vrai batch, bien invisible et non via l'ouverture d'une fenêtre). J'utilise GSPRINT (outil canon qui permet l'impression depuis une ligne de commande).
Et le truc que je ne comprends pas c'est que une commande du style : "c:\program files\...\gsprint.exe" -printer monimprimante "c:\...\file.pdf" fonctionne parfaitement depuis une invit DOS mais rien ne se passe depuis un script PHP avec "exec", "system" ou "passthru". Quand je le peux sur ces 3 commandes je récupère une valeur de retour égale à "1" ?... Par ailleurs, j'ai fait un test de ces 3 commandes PHP avec une commande du style "dir c:\" et là tout fonctionne parfaitement je récupère l'ensemble du blabla en valeur de retour.
Est-ce que qqn peut me dire s'il y a un paramètre de sécurité qqpart qui m'empecherait d'executer un programme ou pourquoi une commande DOS s'executerait bien via DOS mais pas via les fonctions PHP "system", "exec" ou "passtrhu" ?
malheureusement, cette méthode ne semble pas fonctionner avec gsprint.exe... (ni pdf2ps). Toujours pareil la même commande fonctionne parfaitement sous l'invit DOS et ne donne rien dans un script PHP... :-(
Si quelqu'un a une idée pour lancer l'impression d'un PDF en batch (sans aucune ouverture de fenêtre) depuis un script PHP (en précisant une imprimante), je suis plus que preneur :-D
dans ta commande dans le code php, ex : $test=`c:\mybat.bat`; utilises-tu bien les guillemets spéciaux obliques : ` sur mon clavier en BE (belgique) c'est "alt gr" et la touche "µ, £,` "juste à gauche de "enter" mais sur un clavier FR (france) je ne sais pas ?
voir : [be2.php.net] Opérateur d'exécution PHP supporte un opérateur d'exécution : guillemets obliques ("``". Notez bien qu'il ne s'agit pas de guillemets simples. PHP essaiera d'exécuter le contenu de ces guillemets obliques comme une commande shell. Le résultat sera retourné (i.e. : il ne sera pas simplement envoyé à la sortie standard, il peut être assigné à une variable). Utilisez les guillemets obliques revient à utiliser la fonction shell_exec(). Exemple 15-8. Opérateur d'exécution
oui malheureusement j'utilise bien les guillemets spéciaux obliques ` et mon safe_mode est bien à Off.... en revanche je suis en train d'nivestiguer les remarques lié aux droit de IUSR_??? sur cmd.exe. Mais comment retrouver l'utilisateur IUSR_??? sur mon ordi (sachant que j'ai un XPProSP2 et Wamp 1.5.0 (Apache2) ?
Les noms d'utilisateurs et les mots de passe des comptes IUSR_nom_ordinateur et IWAM_nom_ordinateur sont stockés à trois endroits :
la métabase Internet Information Server (IIS) ; Gest. des utilisateurs pour les domaines (Windows NT) ou Utilisateurs et groupes locaux (Windows 2000) ; Microsoft Transaction Server (Windows NT) ou Services de composants (Windows 2000). Si les noms d'utilisateurs et/ou les mots de passe stockés à ces emplacements ne sont pas synchronisés, les messages d'erreur répertoriés plus haut s'affichent.
un autre article qui pourrait être utile : COMMENT FAIRE : Réinitialiser les droits des utilisateurs dans une stratégie de groupe de domaine par défaut
lire aussi : (aide windows xp sp 2 , recherche sur les mots : Paramètres de sécurité par défaut )
Groupes spéciaux Plusieurs groupes supplémentaires sont automatiquement créés par Windows 2000 et Windows XP Professionnel.
Lorsqu'un système Windows 2000 est mis à niveau vers Windows XP Professionnel, les ressources disposant d'entrées d'autorisation pour le groupe Tout le monde (et non explicitement pour le groupe Ouverture de session anonyme) ne seront plus disponibles pour les Utilisateurs anonymes après la mise à niveau. Dans la plupart des cas, c'est une restriction appropriée pour l'accès anonyme. Il peut être nécessaire d'autoriser l'accès anonyme afin de prendre en charge les applications préexistantes qui en ont besoin. Si vous devez accorder un accès au groupe Ouverture de session anonyme, vous devez ajouter explicitement le groupe de sécurité Ouverture de session anonyme et ses autorisations.
Toutefois, dans les cas où il peut s'avérer difficile de déterminer et de modifier les entrées d'autorisation sur les ressources hébergées sur les ordinateurs Windows XP Professionnel, vous pouvez changer le paramètres de sécurité Accès réseau : Permettre aux autorisations Tout le monde de s'appliquer aux utilisateurs anonymes.
In the default mode, the securities tab when inside of the file system explorer is NOT exposed. This default in XP as then it uses "simple file sharing". You must disable the "use simple file sharing" checkbox in the Tools-Folder Options-View menu.
This will expose the tab that allows more detailed security settings. From there, you need to give the anonmyous internet user (IUSER_machine name) write access to the drive where you are trying to write the files.
For seting up the exact security permissions this tutorial [www.dmxzone.com] still apply.
For additional information about the simple xp security check this Microsoft article [support.microsoft.com] and a background howto article [compnetworking.about.com] from About.com
But I still have two questions: 1. despite the unchecked box I still cannot find (see) any "IUSR_xxxx" in the list (which is much more long now) 2. all of this deals with file access or write rights ?... which is not my problem? Is file access and write rights linked to DOS command execution in PHP scripts?
BTW is all the "IUSR_" rights stuff concerning Apache service too (not only IIS)?...