[php] shell script uitvoeren

Pagina: 1
Acties:
  • 112 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Fatamorgana
  • Registratie: Augustus 2001
  • Laatst online: 21-07 01:24

Fatamorgana

Fietsen is gezond.

Topicstarter
Hallo,

Ik heb de volgende situatie:

Onder Debian start ik het volgende:
vncserver :1 -geometry 1024x768 -depth 24

Daarna start ik een script op:
./screenshot.sh http://www.tweakers.net tweakers.jpg

Dit script start firefox met de meegegeven URL, wacht daarna een x aantal seconden, maakt dan een screenshot en schrijft deze weg naar de meegegeven file.

Dit werkt heel goed, firefox start op, de website wordt geopend en de screenshot wordt weggeschreven.

Dan nu het probleem, ik wil dit ook vanuit php kunnen aanroepen en dat wil niet... Het lijkt er op dat ik firefox niet mag starten ofzo.

Dit werkt bv wel in screenshot.sh:

#!/bin/bash
ls -l

Maar als ik er dit van maak dan werkt het niet:

#!/bin/bash
firefox --display :1

Alles werkt wel als ik het via putty via de shell doe, dan zie ik ook mooi firefox op het scherm. Maar als ik het vanuit php aanroep dan zie ik niets bij het firefox stukje.

Tevens heb ik een klein c programma geschreven die firefox moet opstarten, ook dit werkt via de shell perfect, maar zodra ik het via php aanroep dan zie ik weer niets.

Dit geldt alleen via php dmv de webbrowser, als ik het aanroep als: php screenshot.php dan start het php script mooi het shell script en worden er screenshots gemaakt.

Heeft iemand enig idee wat er aan de hand kan zijn en hoe ik het kan oplossen? Ik wil ook dmv van de webbrowser screenshots van websites kunnen maken.

Acties:
  • 0 Henk 'm!

  • Mr. Bondt
  • Registratie: Februari 2005
  • Laatst online: 27-08 14:50
Misschien een rechtenprobleem?
Er staat mij zoiets bij van dat de webserver de rechten van 'Nobody' heeft.
Zoek eens in die richting :)

Acties:
  • 0 Henk 'm!

  • Fatamorgana
  • Registratie: Augustus 2001
  • Laatst online: 21-07 01:24

Fatamorgana

Fietsen is gezond.

Topicstarter
Daar heb ik ook al mee lopen spelen, maar nog niets gevonden wat werkt.

Ik mag het script wel starten vanuit php, maar firefox doet het dan niet. Als ik console commando's zoals ls -l in het shell script zet dan werken die gewoon, behalve firefox. Ook werkt het aanroepen van zelf geschreven programma's, alleen geen programma's die in de vncserver moeten gaan draaien.

Ik kan niet uitvinden waar het probleem precies zit. Mag ik gewoon firefox niet starten, of mag ik deze niet starten in de vncserver, of is het iets anders?

Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Als welke user run je die vncserver? Die sessies zijn per user, je apache user moet dus zelf een VNC server sessie starten.
Daarnaast heeft Linux een aantal environment variabelen die je misschien moet zetten om Firefox duidelijk te maken in welke X sessie hij moet starten.

Acties:
  • 0 Henk 'm!

  • Fatamorgana
  • Registratie: Augustus 2001
  • Laatst online: 21-07 01:24

Fatamorgana

Fietsen is gezond.

Topicstarter
Ik start nu de vncserver zelf via de commandline. Zou het zomaar kunnen gaan werken als ik de vncserver ook start dmv een phpscript via de browser?

Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Als "zelf" een andere user is dan waar apache onder draait, werkt dat niet nee.
Je zou inderdaad met PHP vncserver kunnen starten, maar dat kan ook prima op de command line (zie het linux commando "su")

Acties:
  • 0 Henk 'm!

  • Fatamorgana
  • Registratie: Augustus 2001
  • Laatst online: 21-07 01:24

Fatamorgana

Fietsen is gezond.

Topicstarter
ok, thanks! Ik ga kijken of het hiermee wel gaat werken.

Ondertussen heb ik weer wat getest, maar met 'su' krijg ik het ook niet voor elkaar. Ik neem aan dat de apache user 'www-data' is en als ik onder die user de server start werkt het nog steeds niet.

Ik heb nog niet getest of het werkt als ik de server via de browser start, maar ik heb besloten dat het eigenlijk ook beter is als het script gewoon op de commandline draait. Er moeten meer dan een half miljoen screenshots van websites gemaakt worden en dat gaat een dag of zeventig duren voordat dit klaar is. Dat mag dus wel even lekker rustig buiten de browser gaan draaien. :)

Het zou alleen mooi zijn als het ook via de browser aangestuurd kan worden, want er zijn misschien situaties waarbij het juist leuk is dat er rechtstreeks via de browser een screenshot van een site gemaakt kan worden.

[ Voor 87% gewijzigd door Fatamorgana op 09-01-2007 23:12 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Het kan ook zijn dat de gebruiker die het script uitvoert, geen X windows mag openen op deze display. Met het commando xhost kun je toegang aan bepaalde gebruikers verlenen voor je X server.
Pagina: 1