Ga naar inhoud

Sat4all gebruikt cookies. Lees meer over het gebruik van cookies op sat4all in onze Privacy Policy    Ik accepteer alle cookies

Welkom op Sat4all

Registreren op sat4all.com is gratis. Als je registreert kan je gebruik maken van veel meer functies zoals het plaatsen en beantwoorden van berichten, berichtnotificaties ontvangen als iemand een bericht geplaatst heeft in een forum dat je graag volgt, je kunt een persoonlijk profiel aanmaken, de uitgebreide zoekfunctie gebruiken en (privé) met andere leden communiceren. Wordt dus nu lid!

Foto

php script werkt niet meer met nieuwe update

php

  • Login om te beantwoorden
9 reacties in dit onderwerp

#1 Offline Daan - Geplaatst: 03 mei 2012 - 09:21

Daan

    Sat4all Freak

  • Leden
  • 846 berichten
Ben langerzamerhand me oude linux server aan het herinstalleren ik gebruikte hiervoor debian 4.0 gebruik ik momenteel nu nog,heb even debian 6.0 geinstalleerd op me vmware en gewone server,ik krijg alles geinstaleerd op debian 6.0 alleen mijn script die wilt niet werken op 6.0
ik vraag me af wat er ten opzichte van 4.0 en 6.0 kwa php veranderd is.

dit script werkt op de oude debian 4.0 wel:

#!/usr/bin/php -q
<?php
$dbhost = "localhost";
$dbuser = "dump";
$dbname = "dump2010";
$dbpass = "xxxxxxx";
 
require "phpagi.php";
$agi = new AGI();
$as = $agi->new_AsteriskManager();
// get callerid
$cid = $agi->parse_callerid();
$callernum = $cid["username"];
if (substr($callernum, 0, 4) == "0031") $callernum = "0".substr($callernum, 4);
if (substr($callernum, 0, 2) == "31") $callernum = "0".substr($callernum, 2);
if (substr($callernum, 0, 3) == "+31") $callernum = "0".substr($callernum, 3);

mysql_connect($dbhost, $dbuser, $dbpass) or die ("Failed to connect to the database!");
mysql_select_db($dbname) or die(mysql_error());
if ($result_cid == "" && ($callernum == "" || $callernum == "asterisk"))
$result_cid = "\"anonymous\"<anonymous>";

if ($result_cid == "") {
$query = "select * from white_subscriber where phone = '$callernum'";
$result = mysql_query($query) or die(mysql_error());
if ($row = mysql_fetch_array($result))
#$result_cid = "\"".$row["name"]." ".$row["firstname"]." ".$row["city"]."\"<$callernum>";
$result_cid = "\"".$row["firstname"]." ".$row["name"]." ".$row["streetname"]." ".$row["housenumber"]." ".$row["postalcode"]." ".$row["city"]."\"<$callernum>";
#$result_cid = "\"".$row["name"]." ".$row["firstname"]."\"<$callernum>";
else
{
$query = "select * from pink_subscriber where phone = '$callernum'";
$result = mysql_query($query) or die(mysql_error());
if ($row = mysql_fetch_array($result))
#$result_cid = "\"".$row["name"]." ".$row["firstname"]." ".$row["city"]."\"<$callernum>";
$result_cid = "\"".$row["firstname"]." ".$row["name"]." ".$row["streetname"]." ".$row["housenumber"]." ".$row["postalcode"]." ".$row["city"]."\"<$callernum>";
#$result_cid = "\"".$row["name"]." ".$row["firstname"]."\"<$callernum>";

}
 
 
}
// Unknown......
if ($result_cid == "") {
$result_cid = "\"$callernum\"<$callernum>";
}
$agi->set_callerid($result_cid);
?>

Dit bericht is bewerkt door Daan: 03 mei 2012 - 09:26

Dreambox DM8000HD - DM800HD - DM800SE-CABLE - DM500HD - Openpli 3.0
Wavefrontier T90 - 5W - 0,8W - 4,8E - 9,0E - 13E - 19,2E - 23,5E - 28,2E



#2 Offline Big fellow - Geplaatst: 03 mei 2012 - 12:43

Big fellow

    Sat4all Core Member

  • Leden
  • 3507 berichten
Foutmeldingen in php.ini even allemaal aanzetten. Error logs controleren. Het is een script dat door asterisk wordt aangeroepen dus ik ben niet zeker van waar de errors terecht komen, maar ik gok zo op de console. Even opstarten met asterisk -vvvv (zo uit mijn hoofd)..

Maar misschien is de beste test om even te controleren of "phpagi.php" wel op een plek staat waar php hem kan vinden en openen. (rechten controleren dus!)
You can never solve a problem on the level on which it was created... -- Albert Einstein

#3 Offline Daan - Geplaatst: 03 mei 2012 - 14:20

Daan

    Sat4all Freak

  • Leden
  • 846 berichten

Foutmeldingen in php.ini even allemaal aanzetten. Error logs controleren. Het is een script dat door asterisk wordt aangeroepen dus ik ben niet zeker van waar de errors terecht komen, maar ik gok zo op de console. Even opstarten met asterisk -vvvv (zo uit mijn hoofd)..

Maar misschien is de beste test om even te controleren of "phpagi.php" wel op een plek staat waar php hem kan vinden en openen. (rechten controleren dus!)


de rechten staan goed ik zie ook dat script aangeroepen word in de console, en geeft geen foutmeldingen maar ik denk dat ik het gevonden heb script werkt waarschijnlijk alleen in php4 maar dat ben ik nu even aan het uitzoeken alle benodigheden staan in de agi-bin
Dreambox DM8000HD - DM800HD - DM800SE-CABLE - DM500HD - Openpli 3.0
Wavefrontier T90 - 5W - 0,8W - 4,8E - 9,0E - 13E - 19,2E - 23,5E - 28,2E

#4 Offline Puch - Geplaatst: 05 mei 2012 - 12:30

Puch

    Sat4all Erelid

  • Ereleden
  • 6831 berichten
  • LocatieSijsele - België
Als het in php 4 werkt dan zal het in php 5 ook werken.

Dit begrijp ik niet

if ($row = mysql_fetch_array($result))


$row, die vooraf niet gedetineerd is, zal nooit gelijk zijn aan mysql_fetch_array($result)
Als je slechts 1 resultaat kan krijgen moet dit zijn:
$row = mysql_fetch_row($result);
Daarmee vul je $row met het resultaat van de database query

Als meerdere resultaten mogelijk zijn gebruik je een while lus.
while($row = mysql_fetch_array($result)){
Hier voer je uit
}

iMac OS X 10.8.3 !!
iPhone 5 iOS 6.2 evasi0n jailbreak


#5 Offline Big fellow - Geplaatst: 05 mei 2012 - 14:11

Big fellow

    Sat4all Core Member

  • Leden
  • 3507 berichten
@Puch; De "if ($row = mysql_fetch_array($result))" is heel erg normale PHP code.
Als de query niets terug geeft, dan krijg je FALSE als resultaat. "if ($row=FALSE)" is hetzelfde als "$row=FALSE; if ($row) ..." Geneste statements werken prima in PHP.. Scheelt heel veel code als je het juist gebruikt.

@Daan;
Als het wel werkt op de console dan kan het nog altijd zeer goed wezen dat of de geinclude file niet kan worden gevonden, of dat de rechten (eigenaar/groep) fout staan. Zet de rechten eens op 777 en probeer dan nog eens. Controleer ook of de rechten van de (bovenliggende) directories goed staan voor de user waar asterisk onder draait... Je kan dit allemaal vrij eenvoudig uittesten door met "sudo su -" als root in te loggen, en dan met "su - <asteriskusername>" naar de environment van die user te gaan. Als je dan het script niet kan opstarten op de console, krijg je misschien de foutmeldingen te zien die je vertellen wat er fout gaat... (Zoekpad is ook zo'n "standaard" probleem...)

Dit bericht is bewerkt door Big fellow: 05 mei 2012 - 14:17

You can never solve a problem on the level on which it was created... -- Albert Einstein

#6 Offline Michel - Geplaatst: 05 mei 2012 - 14:15

Michel

    Moderator/Admin

  • Beheerders
  • 7214 berichten
  • LocatieBelgisch Limburg
Puch, dat is niet zonder meer waar. Zelfs als je van PHP 5.0 af komt en naar PHP5.3 gaat, kan het gebeuren dat er code incompatible is die in 5.0 wel nog werkte.

Inderdaad in de error logs kijken waar het fout gaat.

Mvg,

Michel
Alle berichten die ik op dit forum plaats zijn een weergave van mijn persoonlijke mening en vertegenwoordigen
niet noodzakelijk de mening van andere sat4all leden, moderators of zelfs de technische beheerders van deze site.

#7 Offline Puch - Geplaatst: 05 mei 2012 - 15:13

Puch

    Sat4all Erelid

  • Ereleden
  • 6831 berichten
  • LocatieSijsele - België
@Big fellow
Thx voor de tip, ik gebruik het namelijk nooit zo. Goed om weten.

@Michel, je hebt gelijk, maar ik bedoelde bij dergelijk simpele code.
Dit is gewoon standaard php in die zowel php4 als php5 werken.

iMac OS X 10.8.3 !!
iPhone 5 iOS 6.2 evasi0n jailbreak


#8 Offline Daan - Geplaatst: 05 mei 2012 - 18:00

Daan

    Sat4all Freak

  • Leden
  • 846 berichten

@Puch; De "if ($row = mysql_fetch_array($result))" is heel erg normale PHP code.
Als de query niets terug geeft, dan krijg je FALSE als resultaat. "if ($row=FALSE)" is hetzelfde als "$row=FALSE; if ($row) ..." Geneste statements werken prima in PHP.. Scheelt heel veel code als je het juist gebruikt.

@Daan;
Als het wel werkt op de console dan kan het nog altijd zeer goed wezen dat of de geinclude file niet kan worden gevonden, of dat de rechten (eigenaar/groep) fout staan. Zet de rechten eens op 777 en probeer dan nog eens. Controleer ook of de rechten van de (bovenliggende) directories goed staan voor de user waar asterisk onder draait... Je kan dit allemaal vrij eenvoudig uittesten door met "sudo su -" als root in te loggen, en dan met "su - <asteriskusername>" naar de environment van die user te gaan. Als je dan het script niet kan opstarten op de console, krijg je misschien de foutmeldingen te zien die je vertellen wat er fout gaat... (Zoekpad is ook zo'n "standaard" probleem...)


Ik ga na het weekend weer effe verder was het even beu,dan zal ik even kijken naar de foutmeldingen maar deze zie ik niet in de console hij geeft gewoon een return terug

dit is een werkende script als er gebeld word zie ik dit in de console

-- Launched AGI Script /var/lib/asterisk/agi-bin/callerid.php
-- AGI Script callerid.php completed, returning 0
-- Executing [311187xxxxx@from-budgetphone:2] AGI("SIP/311187xxxxx-08224a00", "cid.agi|06xxxxxx|Jasmien test boterbloemstaat 3 3443SB Vlissingen") in new stack



bij het niet werkend script met php 5
-- Launched AGI Script /var/lib/asterisk/agi-bin/callerid.php
-- AGI Script callerid.php completed, returning 0

het script word aangeroepen maar verder komt er niets

Dit bericht is bewerkt door Daan: 05 mei 2012 - 18:05

Dreambox DM8000HD - DM800HD - DM800SE-CABLE - DM500HD - Openpli 3.0
Wavefrontier T90 - 5W - 0,8W - 4,8E - 9,0E - 13E - 19,2E - 23,5E - 28,2E

#9 Offline Big fellow - Geplaatst: 05 mei 2012 - 18:23

Big fellow

    Sat4all Core Member

  • Leden
  • 3507 berichten
Ik was er al bang voor dat je de "verkeerde" console gebruikt... De Asterisk console is toch wel iets anders dan de linux console.
Start asterisk op met "-vvvv" als extra argument.
Zet een paar echo statements in de code om te zien waar de code is... Bijvoorbeeld de regel boven de require:
echo "API laden\n";

En onder $callernum = $cid["username"];


echo "Caller number: ".$callernum;

Etc... Op die manier kan je beter debuggen...

Dit bericht is bewerkt door Big fellow: 05 mei 2012 - 18:25

You can never solve a problem on the level on which it was created... -- Albert Einstein

#10 Offline Daan - Geplaatst: 07 mei 2012 - 11:54

Daan

    Sat4all Freak

  • Leden
  • 846 berichten

Ik was er al bang voor dat je de "verkeerde" console gebruikt... De Asterisk console is toch wel iets anders dan de linux console.
Start asterisk op met "-vvvv" als extra argument.
Zet een paar echo statements in de code om te zien waar de code is... Bijvoorbeeld de regel boven de require:
echo "API laden\n";

En onder $callernum = $cid["username"];


echo "Caller number: ".$callernum;

Etc... Op die manier kan je beter debuggen...


Dit is ook de console van asterisk,


Maar het probleem is opgelost en had even in de asterisk wiki gekeken, er is wat veranderd bij versie's 1.4 tot 1.6

oude config was > agi,callerid.php en nu AGI(callerid.php) dat was de oplossing het werkt nu perfect.
Dreambox DM8000HD - DM800HD - DM800SE-CABLE - DM500HD - Openpli 3.0
Wavefrontier T90 - 5W - 0,8W - 4,8E - 9,0E - 13E - 19,2E - 23,5E - 28,2E





Andere onderwerpen met label 'php'



Inloggen