Toon posts:

[Debian] Cron Job

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

Verwijderd

Topicstarter
Ik ben bezig met een online game site.
Ik heb een php pagina waarmee de ticks worden geupdate.
Dat wil ik dus om de 30 minuten laten doen. Dus ik heb besloten om van dat script een cronjob te maken.

10 * * * * /var/www/game/cronjobs/tick.php #Game ticks

Alleen deze cronjob wil niet werken ik krijg iedere keer de foutmelding.

/bin/sh: line 1: /var/www/game/cronjobs/tick.php: Permission denied

Heb op internet gezocht naar het probleem maar wordt er niet precies wijzer van.
Misschien of 1 van jullie dit wel eens vaker hebben gehad.

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Je kunt php-bestanden niet zonder meer uitvoeren, of je moet de cli van php gebruiken, of je moet hem aanroepen via je webserver.

Verwijderd

Topicstarter
Bedoel je met de cli de map aangeven van php. en hoe kan je het via de webserver laten om de 30minuten

  • mtak
  • Registratie: Juli 2002
  • Niet online
Probeer het eens met bovenaan je PHP script te zetten:
#!/usr/bin/php
in plaats van #!/bin/bash
Hij gebruikt dan de php interpreter als shell, en dan snapt ie commando's als phpinfo(); wel.

Het script hoeft dan ook niet in /var/www/game/cronjobs te staan, waardoor het ook weer wat veiliger wordt ;)

[ Voor 51% gewijzigd door mtak op 12-03-2007 22:26 . Reden: add ]


  • Osiris
  • Registratie: Januari 2000
  • Niet online
"Permission denied" lijkt me eerder een rechten-probleem.

Wat geeft `ls -l /var/www/game/cronjobs/tick.php` voor output en onder welke user probeer je hem te runnen?

[ Voor 1% gewijzigd door Osiris op 12-03-2007 22:24 . Reden: Moet je 't commando wel ervoor zetten Osiris :X ]


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Ik weet niet wat "de map aangeven van php" is, maar ik denk niet dat ik dat bedoel. php is van origine een webscriptingtaal, maar komt tegenwoordig ook met een cli-versie, een command-line-interface zoals bijvoorbeeld andere scriptingtalen als perl zodat je het ook zonder webserver kunt draaien.
Osiris schreef op maandag 12 maart 2007 @ 22:23:
"Permission denied" lijkt me eerder een rechten-probleem.
Dat weet ik wel zeker, het execute-bitje mist namelijk.

[ Voor 27% gewijzigd door blaataaps op 12-03-2007 22:25 ]


  • Osiris
  • Registratie: Januari 2000
  • Niet online
blaataaps schreef op maandag 12 maart 2007 @ 22:24:
Ik weet niet wat "de map aangeven van php" is, maar ik denk niet dat ik dat bedoel. php is van origine een webscriptingtaal, maar komt tegenwoordig ook met een cli-versie, een command-line-interface zoals bijvoorbeeld andere scriptingtalen als perl zodat je het ook zonder webserver kunt draaien.
Erg simpel te testen: typ gewoon `php` gevolgd door enter in, in een terminal-venstertje en je ziet vanzelf of 't werkt of niet.. :P (Althans, met mijn PHP en mn default path-instellingen wel @ Gentoo)

Verwijderd

Topicstarter
ls -l /var/www/game/cronjobs/tick.php geeft als output:

-rw-r--r-- 1 root root 361 2007-03-12 22:24 /var/www/game/cronjobs/tick.php

Ook al voeg ik #!/usr/bin/php bij het php bestand krijg ik nog de foutmelding:

Output from command /var/www/game/cronjobs/tick.php ..

/bin/sh: line 1: /var/www/game/cronjobs/tick.php: Permission denied

Kijk de script werkt wel gewoon heb het wel getest alleen het lukt niet met een cron job

  • icyx
  • Registratie: Januari 2007
  • Niet online

icyx

chown -R us ./base

Verwijderd schreef op maandag 12 maart 2007 @ 22:32:
ls -l /var/www/game/cronjobs/tick.php geeft als output:

-rw-r--r-- 1 root root 361 2007-03-12 22:24 /var/www/game/cronjobs/tick.php

Ook al voeg ik #!/usr/bin/php bij het php bestand krijg ik nog de foutmelding:

Output from command /var/www/game/cronjobs/tick.php ..

/bin/sh: line 1: /var/www/game/cronjobs/tick.php: Permission denied

Kijk de script werkt wel gewoon heb het wel getest alleen het lukt niet met een cron job
Bij je ls -l mist toch echt de x-bit hoor, doe is chmod +x tick.php en probeer het dan nog eens

When you think you’ve succeeded / but something’s missing / means you have been defeated / by greed, your weakness.


Verwijderd

Topicstarter
Ik denk dat hij bijna werkt alleen ik krijg nu een andere foutmelding:

/bin/sh: /var/www/game/cronjobs/tick.php: /usr/bin/php
: bad interpreter: No such file or directory

  • icyx
  • Registratie: Januari 2007
  • Niet online

icyx

chown -R us ./base

Verwijderd schreef op maandag 12 maart 2007 @ 22:39:
Ik denk dat hij bijna werkt alleen ik krijg nu een andere foutmelding:

/bin/sh: /var/www/game/cronjobs/tick.php: /usr/bin/php
: bad interpreter: No such file or directory
Llanorant schreef op maandag 12 maart 2007 @ 22:23:
Probeer het eens met bovenaan je PHP script te zetten:
#!/usr/bin/php
in plaats van #!/bin/bash
Hij gebruikt dan de php interpreter als shell, en dan snapt ie commando's als phpinfo(); wel.

Het script hoeft dan ook niet in /var/www/game/cronjobs te staan, waardoor het ook weer wat veiliger wordt ;)

When you think you’ve succeeded / but something’s missing / means you have been defeated / by greed, your weakness.


  • eth0
  • Registratie: Mei 2002
  • Laatst online: 15-09-2025
Verwijderd schreef op maandag 12 maart 2007 @ 22:39:
Ik denk dat hij bijna werkt alleen ik krijg nu een andere foutmelding:

/bin/sh: /var/www/game/cronjobs/tick.php: /usr/bin/php
: bad interpreter: No such file or directory
Dat betekend dat /usr/bin/php niet bestaat.

Heb je wel de cli versie van php op jou systeem?

probeer eens een "locate php" uit te voeren. Misschien staat hij op een andere locatie?

[ Voor 4% gewijzigd door eth0 op 12-03-2007 22:59 ]


Verwijderd

Topicstarter
Als mijn cli staat onder /etc/php5/cli moet ik dan #! /etc/php5/ invoeren of #! /etc/php5/cli

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Dat zijn hoogstwaarschijnlijk directories en niet het uitvoerbare bestand wat je nodig hebt.

Check even waar de php-CLI-executable staat d.m.v.: `whereis php`

Bij mij geeft dat de uitvoer:

[b][green]gerjan@server[/][blue] ~ $[/][/] whereis php
php: /usr/bin/php /etc/php /usr/share/php
[b][green]gerjan@server[/][blue] ~ $[/][/]


Je moet de eerste hebben. In mijn geval zou de shebang (zo heet dat geval) dan zijn: #!/usr/bin/php

[ Voor 47% gewijzigd door Osiris op 12-03-2007 23:15 ]


Verwijderd

Topicstarter
Als ik whereis php uitvoer krijg ik:

/usr/bin/php

Deze heb ik toevoegd in mijn php code maar blijft deze melding geven

Output from command /var/www/game/cronjobs/tick.php ..

/bin/sh: /var/www/game/cronjobs/tick.php: /usr/bin/php
: bad interpreter: No such file or directory

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Laat me raden, je hebt tick.php op windows gemaakt.

Verwijderd

Topicstarter
nee met de editor in webmin

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Probeer `/usr/bin/php` eens uit te voeren in een terminal-schermpie dan?

Verwijderd

Topicstarter
Als je bedoelt met vi dan krijg ik allemaal ^@^@^@ karakters

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Nee, dat is "openen met vi", ik bedoelde eigenlijk "uitvoeren", dus gewoon intikken in een terminal-venster..

Maar als je wat (binaire) troep ziet in vim, dan bestaat het bestand gewoon dus, vaagheid..

Verwijderd

Topicstarter
en als ik het uitvoer doet hij helemaal niks ik moet hem geforceerd afsluiten

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Mwah, 2x op Ctrl-D drukken ;)

Da's 't idee, je kunt dan op de CLI gewoon je proggie intikken en afsluiten met Ctrl-D.

PHP werkt dus :P

Alleen waarom bash de 'interpreter' niet in /usr/bin/php kan vinden? ...

't Is namelijk écht de foutmelding die je krijgt als je een foute #!/usr/bin/bla invult..

[ Voor 17% gewijzigd door Osiris op 12-03-2007 23:37 ]


Verwijderd

Topicstarter
Dit is de php code

#!/usr/bin/php
<?php
if ($_SERVER['REMOTE_ADDR'] == "192.168.1.35"){
mysql_connect("localhost","??","??");
mysql_select_db("game");

$select = "SELECT * FROM g_ticks";
$query = mysql_query($select)or die(mysql_error());

$update = "UPDATE g_ticks set tick = tick - 1 WHERE tick > 0";
mysql_query($update);
}else{
echo ("Access Denied");
}
?>

Verwijderd

Topicstarter
Ik begrijp er niks van maar hij doet het.

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Toevallig nog wat veranderd? :P

Verwijderd

Ik gebruik zelf Lynx (text based webbrowser) om php scripts vanuit een job uit te voeren.

Zoiets dus:

lynx --dump http://localhost/script.php

(+ eventueel force cookies & ssl cert opties)

Voordeel is dat je dan gewoon gebruik kunt maken van sessies en apache data.

* als extra idee

[ Voor 19% gewijzigd door Verwijderd op 13-03-2007 00:01 ]


Verwijderd

Topicstarter
denk het ja. Maar in ieder geval bedankt voor je tijd

[ Voor 65% gewijzigd door Verwijderd op 13-03-2007 00:03 ]


Verwijderd

Topicstarter
Kan ik ook kiezen om een cronjob te laten runnen na een andere cronjob. Ik kan het wel in 1 bestand doen alleen dan wordt mijn code zeer onoverzichtelijk.

Het gekeken op internet maar kan daar geen antwoord op vinden

  • Paul
  • Registratie: September 2000
  • Laatst online: 22:03
ipv
10 * * * * /var/www/game/cronjobs/tick.php #Game ticks
doe je dan iets als
10 * * * * /usr/local/gamestats/stats.sh #Game ticks & iets anders
, met in die stats.sh
#!/bin/sh
/var/www/game/cronjobs/tick.php
/ergens/iets/anders.php

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op dinsdag 13 maart 2007 @ 00:00:
Ik gebruik zelf Lynx (text based webbrowser) om php scripts vanuit een job uit te voeren.

Zoiets dus:

lynx --dump http://localhost/script.php

(+ eventueel force cookies & ssl cert opties)

Voordeel is dat je dan gewoon gebruik kunt maken van sessies en apache data.

* als extra idee
Nadeel is dat je ook meteen alle nadelen van apache hebt ;) (www-user om maar 1 ding te noemen)
Om nog maar te zwijgen over eventuele security problemen.

Verwijderd

Erkens schreef op zaterdag 24 maart 2007 @ 00:00:
[...]

Nadeel is dat je ook meteen alle nadelen van apache hebt ;) (www-user om maar 1 ding te noemen)
Om nog maar te zwijgen over eventuele security problemen.
Ligt er helemaal aan waarvoor je het nodig hebt, ik gebruik het voor synchronisatie en onderhouds scriptjes te runnen. Verder geen toegang tot de rest van het systeem nodig. Welke security problemen kun jij zo bedenken die belangrijk zouden zijn ? Mijn PHP code is al helemaal voorzien van een rechten systeem zodat je niet zomaar elk scriptje kunt starten.
Pagina: 1