[php] Kan htpasswd niet uitvoeren

Pagina: 1
Acties:

  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024
Ik ben bezig met een proggel wat gebruikers kan aanmaken en verwijderen in een .htpasswd files. Hiervoor gebruik ik het htpasswd script die bij mij in /usr/local/apache/bin staat. Vervelend genoeg wil/kan PHP dmv exec() deze file niet uitvoeren, ik krijg iig nix terug van het systeem (hij zou een hele lap tekst terug moeten geven met hoe htpasswd aangeroepen moet worden). Het is geen rechten probleem, want als in een klein scripje in dezelfde dir plaats (scripje heeft dezelfde rechten en owner (root) als htpasswd) wat gewoon een regel echoed dan krijg ik die regel heel mooi via exec() in een variabele.
Heeft iemand dit al eens vaker geprobeerd of weet iemand waarom htpasswd niet uitgevoerd wordt?

edit: Ook system() en shell_exec() werken niet voor htpasswd, wel voor dat test scripje

  • Grum
  • Registratie: Juni 2001
  • Niet online
STDERR != STDOUT

  • Liqued
  • Registratie: Februari 2001
  • Laatst online: 09-01 18:51
Laat de source eens zien

  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024
PHP:
1
2
3
4
5
6
<?
    $result = system ("/usr/local/apache/bin/./htpasswd");
    print_r ($result);

    print "Exec uitgevoerd!";
?>

exec() heb ik dus op het moment vervangen voor system() maar ook dit geeft niet het gewenste resultaat :( Als ik ./htpasswd verander in ./test (dat test scripje) dan krijg ik gewoon de regel die dat scipt moet echoen in $result terug. De laatste print heb ik erbij gezet zodat ik zeker weet dat het 'hele' script wordt uitgevoerd.

En Grum, wat bedoel je precies? Error is ongelijk aan output?

  • Liqued
  • Registratie: Februari 2001
  • Laatst online: 09-01 18:51
Ik neem aan dat je geen problemen hebt ./htpasswd uit te voeren op die locatie via je gewone shell?

  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024
Nope... dan spugt ie netjes de help parameter uit zodat je kunt zien welke opties er beschikbaar zijn.

  • Grum
  • Registratie: Juni 2001
  • Niet online
De 'error'-output van htpasswd word gegeven naar STDERR ipv STDOUT .. jij kan op deze manier alleen STDOUT inlezen en dus krijg je de info niet.

Het is dus slim als je even gaat zoeken hoe je STDERR kan inlezen met php (en nee dat ga ik je niet voorkauwen .. staat gewoon in de manual)

Verwijderd

zal ik je nog IETS verder helpen dan... lees het eerste user comment op php.net/exec ...

  • froggie
  • Registratie: November 2001
  • Laatst online: 20-11-2024
Kijk, ik wist niet dat unix/linux 2 verschillende bestanden gebruikt om output weg te schrijven. Bedankt voor de hulp iig!
Pagina: 1