Ga naar inhoud


php script werkt niet meer met nieuwe update


Daan

Aanbevolen 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);

?>

aangepast door Daan

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

Link naar reactie
Delen op andere sites


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!)

“Success is not final, failure is not fatal: it is the courage to continue that counts.” ~ Winston Churchill

Link naar reactie
Delen op andere sites

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
Wavefrontier T90 - 5W - 0,8W - 4,8E - 9,0E - 13E - 19,2E - 23,5E - 28,2E

Link naar reactie
Delen op andere sites

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 27" macOS Sierra
iPhone 5s iOS 10

Link naar reactie
Delen op andere sites

@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...)

aangepast door Big fellow

“Success is not final, failure is not fatal: it is the courage to continue that counts.” ~ Winston Churchill

Link naar reactie
Delen op andere sites

  • Beheerder

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

Gebruik je een advertentie blocker? Sluit onze website dan uit. Zonder advertenties kan deze site niet voortbestaan.

Link naar reactie
Delen op andere sites

@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 27" macOS Sierra
iPhone 5s iOS 10

Link naar reactie
Delen op andere sites

Geplaatst: (aangepast)

@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

aangepast door Daan

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

Link naar reactie
Delen op andere sites

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...

aangepast door Big fellow

“Success is not final, failure is not fatal: it is the courage to continue that counts.” ~ Winston Churchill

Link naar reactie
Delen op andere sites

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
Wavefrontier T90 - 5W - 0,8W - 4,8E - 9,0E - 13E - 19,2E - 23,5E - 28,2E

Link naar reactie
Delen op andere sites

Maak een account aan of log in om te reageren

Je moet een lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Registreer voor een nieuwe account in onze community. Het is erg gemakkelijk!

Registreer een nieuwe account

Inloggen

Heb je reeds een account? Log hier in.

Nu inloggen
×
×
  • Nieuwe aanmaken...