Daan Geplaatst: 3 mei 2012 Geplaatst: 3 mei 2012 (aangepast) 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); ?> 3 mei 2012 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
Big fellow Geplaatst: 3 mei 2012 Geplaatst: 3 mei 2012 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
Daan Geplaatst: 3 mei 2012 Auteur Geplaatst: 3 mei 2012 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
Puch Geplaatst: 5 mei 2012 Geplaatst: 5 mei 2012 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 SierraiPhone 5s iOS 10
Big fellow Geplaatst: 5 mei 2012 Geplaatst: 5 mei 2012 (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...) 5 mei 2012 aangepast door Big fellow “Success is not final, failure is not fatal: it is the courage to continue that counts.” ~ Winston Churchill
Beheerder Michel Geplaatst: 5 mei 2012 Beheerder Geplaatst: 5 mei 2012 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.
Puch Geplaatst: 5 mei 2012 Geplaatst: 5 mei 2012 @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 SierraiPhone 5s iOS 10
Daan Geplaatst: 5 mei 2012 Auteur Geplaatst: 5 mei 2012 (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 5 mei 2012 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
Big fellow Geplaatst: 5 mei 2012 Geplaatst: 5 mei 2012 (aangepast) 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... 5 mei 2012 aangepast door Big fellow “Success is not final, failure is not fatal: it is the courage to continue that counts.” ~ Winston Churchill
Daan Geplaatst: 7 mei 2012 Auteur Geplaatst: 7 mei 2012 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
Aanbevolen berichten
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 accountInloggen
Heb je reeds een account? Log hier in.
Nu inloggen