Installare XDebug in Ubuntu 14.04

Pubblicato il Scritto il da

XDebug, puoi solo amarlo od odiarlo, nessuna via di mezzo purtroppo.
Il noto debugger non è sicuramente un condensato di stabilità ed usabilità, ma di certo è l’unica alternativa free per migliorare i nostri sviluppi in PHP.

E ‘abbastanza facile installarlo su Ubuntu, vediamo come fare. Prima di tutto da console, lanciare il seguente comando:

sudo apt-get install php5-xdebug

Il quale installerà l’ultima versione, al momento della stesura di questo post è la 2.2.3. Ora aggiornare le opzioni in /etc/php5/apache2/php.ini:

# XDebug
 zend_extension="/usr/lib/php5/20121212/xdebug.so"
 xdebug.remote_enable=1
 xdebug.remote_handler=dbgp
 xdebug.remote_mode=req
 xdebug.remote_host=127.0.0.1
 xdebug.remote_port=9000
 xdebug.max_nesting_level=300

Riavviate Apache2:

sudo service apache2 restart

Ed il gioco è fatto. Buon debugging!

Facebook – Introduzione alle Graph API

Pubblicato il Scritto il da

Cose necessarie:

  • ID dell’utente
  • Access token
  • CURL installato nel nostro server
Procurarsi un access token
https://www.facebook.com/dialog/oauth?client_id=xxx&redirect_uri=xxx&response_type=token&scope=create_event

http://www.venetotornei.com/#access_token=xxx&expires_in=4101

https://graph.facebook.com/xxx?access_token=xxx
<?php
$userID = "XXX"; // Può essere me o un numero
$accessToken = "XXX";
$update_url = "https://graph.facebook.com/".$userID."/events";
$form_fields = array(
	"access_token" => $accessToken,
	"start_time" => time() + (7 * 24 * 60 * 60),
	"end_time" => time() + (8 * 24 * 60 * 60),
	"location" => "someplace",
	"name" => "New Test Event Using Graph API"
);

$temp = array();

foreach( $form_fields as $key => $value )
	$temp[$key]=utf8_encode($value);

$form_data = http_build_query($temp);

$curl = curl_init();
curl_setopt ($curl, CURLOPT_URL, $update_url);
curl_setopt ($curl, CURLOPT_POST, 1);
curl_setopt ($curl, CURLOPT_POSTFIELDS, $form_data);
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);

$result = json_decode(res.content);

if ($result["id"]!==false)
   echo "Successfully Created Event";
else
   echo "Failure";

?>

E come sempre: scusate la rozzezza del codice.

Buona “developpata”! 😉

Phpmyadmin – Disabilitare i popup per la creazione di nuove tabelle

Pubblicato il Scritto il da

Phpmyadmin è una praticissima web application che ci permette di amministrare i nostri database MySQL.

Con l’avanza delle versioni si possono gustare nuova funzionalità, recentemente la sezione dedicata alla stored procedure è la mia preferita! 😉

Non mancano però alcuni punti poco attraenti dell’applicativo, uno fra tutti: l’utilizzo di pop-up modali per la creazione/modifica delle tabelle o delle procedure. A mio avviso non è il modo migliore per gestire questa funzionalità.

Fortunatamente c’è la possibilità di disabilitare questa opzione e di far aprire l’editor delle tabelle (o delle procedure) in una nuova pagina, vediamo come fare:

  • Apriamo il file “/var/lib/phpmyadmin/config.inc.php” con un utente amministratore, possiamo farlo digitando:
    sudo kate /var/lib/phpmyadmin/config.inc.php
  • Cerchiamo la configurazione:
    $cfg['AjaxEnable'] = true;

    e modifichiamola in questo modo, se il file è vuoto scriviamo “<?php” ed a seguire aggiungiamo:

    $cfg['AjaxEnable'] = false;
Bene, finito!
Riaprite il vostro phpmyadmin e buona interrogazione! 😉

PHP – Da XML ad array

Pubblicato il Scritto il da

Ho avuto un periodo nella mia vita in cui parsare file XML in PHP era diventata un’ossessione (vedi “PHP – HTML Parser (text node compresi)“).

E con questo secondo appuntamento cambiamo metodo: non più DOM, ma XML Parser.

Vediamo il codice:

<?php
$xml="<a:root>
        aaa
        <a1 ciao="bella">
	    <b1>
	        ff
	    </b1>
	</a1>
	<a2>
	    bb
	</a2>
      </a:root>";

$struct = array();
$xml_parser = xml_parser_create(); 

xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "data"); 

$parse = xml_parse($xml_parser,$xml); 

xml_parser_free($xml_parser); 

print("<pre>n");
print_r($struct);
print("</pre>n"); 

function startElement($parser, $name, $attrs)
{
    global $struct; 

    $tag = array("name"=>$name, "attributes"=>$attrs); 

    array_push($struct,$tag);
} 

function data($parser, $data)
{
    global $struct,$i; 

    if(trim($data)) {
        $struct[count($struct)-1]['data']=trim($data);
    }
} 

function endElement($parser, $name)
{
    global $struct; 

    $struct[count($struct)-2]['child'][] = $struct[count($struct)-1]; 

    array_pop($struct);
}
?>

Scusate, per l’ennesima volta, la ruzzezza del codice (“ma non avuto il tempo di farlo in scala e di dipingerlo” [cit] )

L’output risultate è il seguente:

Array
(
    [0] => Array
	(
		[name] => A:ROOT
		[attributes] => Array
		(
		)

		[data] => aaa
		[child] => Array
		(
			[0] => Array
			(
				[name] => A1
				[attributes] => Array
				(
					[CIAO] => bella
				)

				[child] => Array
				(
					[0] => Array
					(
						[name] => B1
						[attributes] => Array
						(
						)
						[data] => ff
					)
				)
			)

			[1] => Array
			(
				[name] => A2
				[attributes] => Array
				(
				)
				[data] => bb
			)
		)
	)
)

Sarebbe interessante effettuare dei benchmark.

Buon parse! 😉

Fonte: link.

PHP – Class ‘DOMDocument’ not found

Pubblicato il Scritto il da

Se vi imbattete in quest’errore mentre provate Apache sulla vostra Fedora, non preoccupatevi. Non sono state installate le librerie per l’interazione di PHP con XML.

Una piccola ricerca su Google ed ecco come risolvere il problema:

  • Aprite una console e digitare:
    sudo yum install php-xml
  • Riavviate il server apache:
    sudo service httpd restart

Fatto!

Buona programmazione! 😀

P.S.
A me questo problema bloccava l’esecuzione di un plugin di WordPress.
Al caricamento del blog compariva un errore  500.
Una rapida occhiata ai log di Apache mi hanno svelato il vero problema:  Class ‘DOMDocument’ not found.