[PHP] File op server runnen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Psychokiller
  • Registratie: Oktober 2001
  • Niet online
Vooraf: We hebben een domein + webruimte van een hosting draaiend op een linux server. Heb de search van hier, phpfreakz en google gebruikt, maar kan niets vinden wat ik zoek. Ook de hosting wist niet hoe het moest mbv PHP.

Wat ik uiteindelijk wil: Nadat iemand een juiste file upload via een pagina, moet er op de server een bestand uitgevoerd worden die allerlei informatie uit het zojuist ge-uploade bestand in een .txt file zet.
Dat uploaden van de file gaat het me nu niet om, het gaat me echt om het uitvoeren van het programma dat de info uit de andere files haalt.
Ik heb dus zelf al een juiste file op de server gezet in dezelfde map als het te uitvoeren bestand.
Het uit te voeren bestand is btw een linux bestand, omdat me leek dat dat ook zo moest omdat de server op Linux draait.

Ik heb in de php file het volgende staan:
code:
1
2
$file = "bestand *.hlc > test.txt";
exec($file);

Waar ik dus op hoopte, was dat op dit moment 'bestand' gerunned werd, en middels de -a de output zou zetten in test.txt.
Majah dat werkt dus blijkbaar niet.
Heb nog even geprobeert met shell_exec(), maar dat leverde een melding over savemode en backquotes op.

Op phpfreakz was er 1 vergelijkbaar iets op het forum, waarbij toen iemand zei dat exec() alleen werkt bij de op de server geïnstalleerde programma's. PHP.net heeft het echter over het executeren van een extrern programma, wat ik in dit geval dus ook erin zie.

Hoop dat er hier iemand is die me verder kan helpen, of meldt dat het eigenlijk niet gaat en waardoor dan.

[ Voor 2% gewijzigd door Psychokiller op 02-03-2003 13:43 . Reden: Edit: Typo ]


Acties:
  • 0 Henk 'm!

  • Kippenijzer
  • Registratie: Juni 2001
  • Laatst online: 26-08 09:08

Kippenijzer

McFallafel, nu met paardevlees

Tja, het heeft vaak iig te maken met de security instellingen op de server, welke bepalen wat je wel en niet mag doen, ik echte safe mode mag je geen externe programma's aanroepen. Draait het script wel goed als je hem gewoon vanuit een shell runt?

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Leg dan ook nog even uit wat er niet werkt.

En je redenatie over dat het alleen werkt met op de server geinstalleerde programma's: Op het moment dat het programma op de server staat, is het toch daarop geinstalleerd? ;)

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Geef eens het volledige pad op van alle bastanden (de executable, het input bestand en het output bestand)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Psychokiller
  • Registratie: Oktober 2001
  • Niet online
Kippenijzer schreef op 02 March 2003 @ 13:18:
Draait het script wel goed als je hem gewoon vanuit een shell runt?
Het gaat om webspace van een host he, dus niet op eigen pc. iig is het niet bij me bekend dat je via een shell kunt werken dan ?
Edit: Zie in FlashFXP een knop "Raw Command". Vul ik daar dan "hofxlap *.hlc >test.txt" in, krijg ik de message "500 HOFXLAP not understood." terug.
ACM schreef op 02 March 2003 @ 13:18:
Leg dan ook nog even uit wat er niet werkt.

En je redenatie over dat het alleen werkt met op de server geinstalleerde programma's: Op het moment dat het programma op de server staat, is het toch daarop geinstalleerd? ;)
Er wordt geen tekst bestand gecreeërd. Maar weet dus nieteens of de file wel wordt uitgevoerd.
Janoz schreef op 02 maart 2003 @ 13:19:
Geef eens het volledige pad op van alle bastanden (de executable, het input bestand en het output bestand)
Bij een error zie ik volledige path: /home/sites/site34/web/Laps/file
Op server ingelogd zie ik pas alles na de web/
Dus bestanden staan allemaal in de map Laps/

Executable: /home/sites/site34/web/Laps/hofxlap
Input: /home/sites/site34/web/Laps/test.hlc
Output moet worden: /home/sites/site34/web/Laps/test.txt

[ Voor 6% gewijzigd door Psychokiller op 02-03-2003 13:42 ]


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Wat je volgens mij moet doen is echo exec("programma"); dat hoef je ook niet moeilijk te doen met TXT files om de output op te vangen. Op bovengenoemde manier wordt de output automatisch ge output naar de browser. Desnoods kan je op deze manier de output ook door PHP naar een TXT file laten schrijven.

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • Psychokiller
  • Registratie: Oktober 2001
  • Niet online
Ik krijg dus geen enkele output te zien middels de echo exec() :(
Programma wordt dus niet uitgevoerd ?

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Je hebt wel het volledige pad naar de executable gebruikt? Heb je verders een "doc_root" in je php.ini ingesteld die wellicht de toegang naar het pad beperkt?

En krijg je wat te zien in je PHP error_log?

[ Voor 17% gewijzigd door Spider.007 op 02-03-2003 14:03 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • Psychokiller
  • Registratie: Oktober 2001
  • Niet online
php.ini is toch alleen maar door hosting te veranderen ?
phpinfo() geeft bij doc_root: no value bij zowel Local als Master Value.

Volledige pad geprobeert, maar blijft onverandert.
Error_log weet ik niet waar ik die vind, maar zal eens kijken hoe ik die krijg.

[ Voor 17% gewijzigd door Psychokiller op 02-03-2003 14:15 ]


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Psychokiller schreef op 02 March 2003 @ 14:09:
php.ini is toch alleen maar door hosting te veranderen ?
Volledige pad geprobeert, maar blijft onverandert.
Error_log weet ik niet waar ik die vind, maar zal eens kijken hoe ik die krijg.
Zet een bestand in je webroot en zet daarin
PHP:
1
<?PHP phpinfo(); ?>
Ga daar eens in rondneuzen en als je het niet kan vinden moet je hier de URL eens posten. Verder heb je overigens ook kans dat dit (uitvoeren van progsel) gewoon door de hoster is verboden (evt. onbewust). Mocht je geen shell access hebben tot de server wordt het lezen van de error_log wellicht lastig; maar dat horen we dan wel weer :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • Psychokiller
  • Registratie: Oktober 2001
  • Niet online
Dat had ik idd net gedaan op moment dat je postte blijkbaar :)
Alleen staat bij error_log dus: Off
Hier de hele info file: phpinfo()

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Probeer dit eens (ik heb geen idee of dit kan :? ):
PHP:
1
2
ini_set("log_errors", "On");
ini_set("error_log", "/home/sites/site34/web/Laps/error_log");
Anders moet je opzoek gaan naar de standaard locatie van de PHP error log. Controleer even of PHP (apache dus) schrijfrechten heeft in de map waar de error_log in terecht komt.

Oh; bekijk ook dit even :)

edit:
Ben ik de enige met f*cked-up text op php.net:?

[ Voor 17% gewijzigd door Spider.007 op 02-03-2003 14:59 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • Psychokiller
  • Registratie: Oktober 2001
  • Niet online
OT: Neej je bent niet de enige ;)

Die 2 ini_set's hebben geen effect in ieder geval.
In de phpinfo file staat bij Apache: DOCUMENT_ROOT: /home/sites/site34/web
Da's dus gewoon de standaart map waar alles in komt, maar heb nog geen enkele logile zien verschijnen :(
Zou niet weten hoe ik controleer of apache daar schrijfrechten heeft, maar lijkt me toch zeer waarschijnlijk van wel.

Djuus heb er hekel aan als iets niet wil, vooral als je het al weken probeert... :)

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Psychokiller schreef op 02 March 2003 @ 13:35:
Executable: /home/sites/site34/web/Laps/hofxlap
Input: /home/sites/site34/web/Laps/test.hlc
Output moet worden: /home/sites/site34/web/Laps/test.txt

Janoz doelde erop dat je ze zo in je code zou kunnen proberen te aanspreken, ipv zonder pad :)

[ Voor 3% gewijzigd door ACM op 02-03-2003 18:06 ]


Acties:
  • 0 Henk 'm!

  • Psychokiller
  • Registratie: Oktober 2001
  • Niet online
Heb ik geprobeert, maar gaf exact zelfde resultaat, niets dus :(

Acties:
  • 0 Henk 'm!

  • Carnifex
  • Registratie: Januari 2000
  • Laatst online: 10:03

Carnifex

auch

Spider.007 schreef op 02 March 2003 @ 14:57:
Oh; bekijk ook dit even :)

edit:
Ben ik de enige met f*cked-up text op php.net:?
hehe, lol. Moet je ook niet de taiwanese manual gebruiken :P. Verander de 'tw' in de link eens in 'nl' ;), deze dus:
http://www.php.net/manual/nl/features.safe-mode.php

Acties:
  • 0 Henk 'm!

  • sjoerdb2
  • Registratie: Juli 2001
  • Laatst online: 09-05 09:52
Misschien niet de oplossing, maar kun je niet met php de waarden uit het ge-uploadde bestand opslaan naar txt?

edit:

Dus eigenlijk het programma omzetten naar een php programma?

[ Voor 28% gewijzigd door sjoerdb2 op 02-03-2003 18:36 ]


Acties:
  • 0 Henk 'm!

  • cybermans
  • Registratie: Maart 2001
  • Laatst online: 17-09 09:56
mocht het een php file zijn die je wil runnen dan zal je de php file zo willen aan roepen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?PHP
if ($_GET[action]=="response")
{
    header("Content-type: text/txt");

    // uitvoer txt bestand heet adressen.txt
    header("Content-Disposition: attachment; filename=adressen.txt");

    // De file waar de data in staat
    //readfile('response.php');
    $fp=fopen("http://".$_SERVER[SERVER_NAME].substr($_SERVER[PHP_SELF], 0, strrpos($_SERVER[PHP_SELF], "/"))."/response.php", "r"); 
    fpassthru($fp); 
    exit;
}
?>

hier wordt aan de client de data die gegenereert wordt door response.php terug gegeven in een txt file

srry voor de layout

[ Voor 21% gewijzigd door cybermans op 02-03-2003 18:38 ]

Strava | Runkeeper | Endomondo (mijn leikr uploads)


Acties:
  • 0 Henk 'm!

  • Psychokiller
  • Registratie: Oktober 2001
  • Niet online
sjoerdb schreef op 02 March 2003 @ 18:34:
Misschien niet de oplossing, maar kun je niet met php de waarden uit het ge-uploadde bestand opslaan naar txt?

edit:

Dus eigenlijk het programma omzetten naar een php programma?
Het uit te voeren programma haalt juist alle data op en zet het in een textfile.
Letwel, dat programma wat alle data ophaalt is niet door mij gemaakt ofzo, en kan dus niet de code ervan omzetten ofzo :)

@cybermans: Het is dus een linux bestand, al heb ik ook de DOS versie liggen.
Maar dat maakt geen verschil helaas.

[ Voor 11% gewijzigd door Psychokiller op 02-03-2003 19:50 ]


Acties:
  • 0 Henk 'm!

  • sebas
  • Registratie: April 2000
  • Laatst online: 03-09 12:51
Hmm, is dit niet misschien gewoon met chmod op te lossen?

Probeer eens 'chmod 755 bestand', of d.m.v. een shell login, php, of je ftp client. Standaard zijn files die geschreven worden afaik niet executable, dus dat zou het kunnen zijn.
Wel raar is dat je geen error log krijgt. probeer eens uit te voeren met '/pad/naar/bestand /pad/naar/*.hlc > /pad/naar/error.log 2>&1'.

Everyone complains of his memory, no one of his judgement.


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Kippenijzer schreef op 02 maart 2003 @ 13:18:
Tja, het heeft vaak iig te maken met de security instellingen op de server, welke bepalen wat je wel en niet mag doen, ik echte safe mode mag je geen externe programma's aanroepen. Draait het script wel goed als je hem gewoon vanuit een shell runt?
Volgens mij komt het gewoon doordat de safe mode aanstaat :?

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • cybermans
  • Registratie: Maart 2001
  • Laatst online: 17-09 09:56
kan mijn oplossing alsnog als je hem met een shell_exec uitvoert

Strava | Runkeeper | Endomondo (mijn leikr uploads)


Acties:
  • 0 Henk 'm!

Verwijderd

en backticks??
$result = `/home/sites/username/www/directory/command -p parameter`;

?? gebruik ik veel liever dan system() en exec() dingen...

Acties:
  • 0 Henk 'm!

  • Psychokiller
  • Registratie: Oktober 2001
  • Niet online
@sebas: zo heb ik um erin gezet, kreeg geen error, maar zie ook geen logfile ergens staan:
exec('/home/sites/site34/web/Laps/hofxlap /home/sites/site34/web/Laps/*.hlc > /home/sites/site34/web/Laps/error.log>&1');
En had alle files van te voren al ge-chmod :)
@voodoochile: de $result regel resulteerd in "Warning: Cannot execute using backquotes in safe mode in ..." :(
@cybermans: shell_exec ipv exec geeft precies dezelfde warning, had ik al eerder gemeld dacht ik.

Bedankt iig al voor alle hulppogingen :)

Zou ut dan gewoon de safemode zijn :( ?

[ Voor 8% gewijzigd door Psychokiller op 03-03-2003 15:15 ]


Acties:
  • 0 Henk 'm!

  • sebas
  • Registratie: April 2000
  • Laatst online: 03-09 12:51
Psychokiller schreef op 03 March 2003 @ 15:15:
[...]
Zou ut dan gewoon de safemode zijn :( ?
Dat kun je denk ik beter aan de admin van de server vragen dan hier, dan krijg je misschien meer dan een vage gok als antwoord.

Als je toch voor de gok gaat:

"zou natuurlijk kunnen .... " :+

edit:
typo

[ Voor 5% gewijzigd door sebas op 03-03-2003 18:35 ]

Everyone complains of his memory, no one of his judgement.


Acties:
  • 0 Henk 'm!

  • Psychokiller
  • Registratie: Oktober 2001
  • Niet online
Ik heb de hosting mail gestuurd, met vraag of ze niet de Safe-mode voor die map uit konden zetten. Ze hebben het blijkbaar gedaan want het werkt nu!
Alleen zorgt de normale exec() regel dat ik een tekst file krijg waarin alles achter elkaar.
Majah nog even rotzooien ermee en ut komt wel goed :)
Bedankt voor hulp iig! :)

[ Voor 12% gewijzigd door Psychokiller op 04-03-2003 16:29 . Reden: Edit: foutje :) ]

Pagina: 1