Vraag & Antwoord

Webprogrammeren & scripting

[PHP]exe-bestand en dos commando

Anoniem
Buur
13 antwoorden
  • Hoe kun je een .exe bestand en een (msdos-commando) via php laten draaien om de uitvoer online te krijgen ?
    In MSDOS zelf gebruik ik een .exe-bestand en een textbestand om de invoer te controlleren, je krijgt dan altijd een uitvoer terug. Deze uitvoer wil ik online te zien krijgen.

    Maar hoe?
    De commando in DOS is dus bijvoorbeeld:
    [b:b8b95681d6]bestand.exe text.txt "je_eigen_invoer"[/b:b8b95681d6]

    De uitvoer is dan bijvoorbeeld je invoer met wat commentaar erbij

    [code:1:b8b95681d6]$location = 'bestand.exe';
    system ($location) or die('Kan bestand.exe niet laden<br><br>'); [/code:1:b8b95681d6]

    Dit werkt niet, ik krijg steevast 'Kan bestand.exe niet laden'.
  • 1 van deze geprobeerd?
    [code:1:89e05327a7]
    exec();
    shell_exec();
    passthru();
    [/code:1:89e05327a7]
  • Dat heb ik
    [code:1:8bebdd9ac6]
    $bestand = "/var/www/html/stage/bestand.exe";
    $output = shell_exec($bestand) or die("Kan bestand.exe niet laden!");[/code:1:8bebdd9ac6]

    Maar ik beland steeds op "Kan bestand.exe niet laden"
    Wanneer ik m'n errorlog bekijk krijg ik de melding "'cannot execute binary file'"

    hoe kan je het anders benaderen?
  • Neem het volledige pad van de executable eens mee op. Een commando als system() zou wel gewoon moeten werken. Je zou je ook nog eens in rechten kunnen verdiepen.
  • de persimissions heb ik op de server zelf gezet op 755
    wanneer ik system() uit wil testen op m'n localhost krijg ik toch die error, ondanks de volledige padbenoeming

    [code:1:a8ce55c59f]system ("C:\AppServ\www\test2\bestand.exe")or die("error!");[/code:1:a8ce55c59f]
    met dubbele slashes wel effect op m'n localhost

    [code:1:a8ce55c59f]system ("C:\\AppServ\\www\\test2\\bestand.exe")or die("error!");[/code:1:a8ce55c59f]

    nu even testen op m'n server
  • wanneer ik alles opload naar mn domein dan krijg ik helaas in de log de melding
    [Fri Mar 03 17:01:29 2006] [error] [client ipadres] sh: line 1: //var//www//html//stage//bestand.exe: cannot execute binary file
    hoe verhelp je dat
  • Windows executable op linux host? Als dat het geval is, zal het gewoon nooit werken. Linux tegenhanger van de executable zoeken. En hopen dat je voldoende rechten hebt om die te draaien.
  • weer wat geleerd :oops: :lol:
  • wanneer er geen linux versie is en je toch liever in php aan de slag wil om het bestand aan de praat te krijgen, kun je php combineren met een andere taal om het werkend te krijgen?
  • Misschien wel. Maar geef eens aan om welk bestand het gaat, wellicht dat iemand hier een oplossing kan aangeven.
  • De executable is een soort van parser:
    De parameters in DOS
    [b:2d2a360822]bestand.exe text.txt "je_eigen_invoer" [/b:2d2a360822]

    De executable checkt of de invoer van de gebruiker over1 komt met de inhoud van het textbestand. In het text bestand staan voorwaarden op de invoer van de gebruiker.
    Mocht de invoer dus over1 komen met de inhoud dan krijg je als uitvoer: de invoer + extra regels die vermeld staan in de text bestand.
    Mocht de invoer niet over1 komen dan krijg je als uitvoer terug: de invoer

    ik denk eraan om over te stappen op asp.net … alleen is die taal nog compleet nieuw voor me
  • Is het niet mogelijk daar zelf een scriptje voor te brouwen? Klinkt tenminste niet echt ingewikkeld.
  • daar ben ik dus ook zelf mee bezig maar ik denk dat de voorkeur uitgaat naar de executable, het is zelf ontworpen door het bedrijf.
    Wel maak ik zelf een functie EN ik kijk of ik de .exe aan de praat kan krijgen .. leer ik ook weer eens een andere taal ipv dat eeuwige php.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.