Beste allemaal,
Ik heb een klein "test-tooltje" gemaakt waarin ik gebruik maak van een tweetal certificaten.
Dit is een executable die ik via de command line (Windows) kan draaien. Ik geef een parameter mee, en ik krijg een bepaalde output.
Alles werkt tot zo ver. Ook het gebruik van de certificaten werkt.
Dus als ik in de DOS prompt het volgende type: E:\testje4 dit_is_de_input
Dan komt er netjes als output "Hello World, het werkt :-)"
Het probleem nu:
Wanneer ik deze executable wil opstarten via een PHP script:
Als ik echter de code in de executable waarin de certificaten gebruikt wordt "uitschakel", en gewoon met Console.WriteLine("test") iets naar de commandline schrijf, dan laat m'n PHP script deze output wel mooi zien.
Er gaat in de executable dus iets fout waar de certificaten nodig zijn.
Waar ik zelf aan zat te denken:
Als ik zelf (als ingelogde gebruiker dus) het programmaatje "handmatig" opstart ben IK zelf de gebruiker die het opstart (en dan worden de certificaten dus ook gevonden). Maar als het programmaatje via PHP wordt aangeroepen, dan is de IIS user (ik draai PHP in IIS) diegene wat het programma opstart (dat denk ik tenminste) en daardoor kan hij die certificaten niet vinden.
Is dat een logische gedachte? En hoe kan ik dit het beste oplossen?
Ik zou dus graag die executable willen opstarten via dat PHP scriptje...
Hopelijk is mijn verhaal enigszins duidelijk
Alvast bedankt in ieder geval voor 't meedenken!
[edit]
Als ik het op een andere computer waar i.p.v. IIS met PHP, Apache met PHP draaid, dan werkt het wel
(das tenminste iets
) maar hoe kan dat nu dat het via IIS niet werkt terwijl andere executables (of zelfs dezelfde alleen dan zonder dat certificaat gedoe) wel gewoon werken...
Ik heb een klein "test-tooltje" gemaakt waarin ik gebruik maak van een tweetal certificaten.
Dit is een executable die ik via de command line (Windows) kan draaien. Ik geef een parameter mee, en ik krijg een bepaalde output.
Alles werkt tot zo ver. Ook het gebruik van de certificaten werkt.
Dus als ik in de DOS prompt het volgende type: E:\testje4 dit_is_de_input
Dan komt er netjes als output "Hello World, het werkt :-)"
Het probleem nu:
Wanneer ik deze executable wil opstarten via een PHP script:
Dan blijft de pagina runnen (het PHP script komt niet ten einde).<?php
exec("e:\\testje4.exe dit_is_de_input",$out,$code);
foreach ($out as $v) {
echo "$v";
echo "<br>";
}
echo "php script end";
?>
Als ik echter de code in de executable waarin de certificaten gebruikt wordt "uitschakel", en gewoon met Console.WriteLine("test") iets naar de commandline schrijf, dan laat m'n PHP script deze output wel mooi zien.
Er gaat in de executable dus iets fout waar de certificaten nodig zijn.
Waar ik zelf aan zat te denken:
Als ik zelf (als ingelogde gebruiker dus) het programmaatje "handmatig" opstart ben IK zelf de gebruiker die het opstart (en dan worden de certificaten dus ook gevonden). Maar als het programmaatje via PHP wordt aangeroepen, dan is de IIS user (ik draai PHP in IIS) diegene wat het programma opstart (dat denk ik tenminste) en daardoor kan hij die certificaten niet vinden.
Is dat een logische gedachte? En hoe kan ik dit het beste oplossen?
Ik zou dus graag die executable willen opstarten via dat PHP scriptje...
Hopelijk is mijn verhaal enigszins duidelijk
[edit]
Als ik het op een andere computer waar i.p.v. IIS met PHP, Apache met PHP draaid, dan werkt het wel
[ Voor 8% gewijzigd door Atmoz op 19-07-2013 10:30 ]