Utilizzo di Zend Framework 2

Zend Framework 2 (ZF2) è un diffuso strumento per lo sviluppo di siti ed applicazioni in  PHP.

E’ possibile utilizzarlo nei nostri piani hosting Linux (Linux Basic Illimitato, Linux Pro, Fracto Linux)

Per l’installazione corretta:

  • il sito deve essere pubblicato interamente nella directory htdocs

 

  • il file index.php in htdocs dovrà contenere il seguente codice:
    <?php
    include 'public/index.php';
    ?>

 

  • il file .htaccess dovrà contenere il seguente codice:
    SetEnv APPLICATION_ENV production
     RewriteEngine On
     RewriteRule .* index.php

 

 

 

Come convertire un piano “Hosting Basic Illimitato” o “Hosting Fracto” in “Hosting WordPress”

Se un utente di un piano “Hosting Basic Illimitato” oppure di un piano “Hosting Fracto” desidera convertirlo nel nostro piano specifico “Hosting WordPress“, deve procedere come segue:

  1. assicurarsi di disporre del credito necessario all’operazione e, nel caso, effettuare una ricarica (“Gestione ordini”  ⇒ “ricarica credito”)
  2. effettuare un backup completo di tutti i contenuti web e del db mySQL
  3. richiederci l’operazione aprendo uno specifico ticket di assistenza su panel.newmedialabs.it

Noi provvederemo a:

  • cancellare il vecchio servizio di hosting
  • realizzare il nuovo servizio hosting WordPress
    sul quale poi l’utente potrà opportunamente ricaricare i contenuti dal proprio backup

NOTE:

  • dopo la fase “2”, e fino al completamento della reinstallazione sul nuovo hosting, evitare di modificare il sito e di caricare nuovi contenuti: gli stessi verrebbero ovviamente persi
  • consigliamo di evitare il semplice restore integrale dei contenuti web nel nuovo hosting, in quanto in tal modo si andrebbe a sovrascrivere la versione di WordPress preinstallata.
    E’ invece consigliabile approfittare dell’occasione per una reinstallazione integrale, sfruttando il WordPress preinstallato ed effettuando il restore solo ed esclusivamente dei contenuti web; eventuali plugin o temi personalizzati, differenti da quelli preinstallati, è consigliabile parimenti reinstallarli ex-novo
  • l’utente può altresì, se lo si ritiene, effettuare un semplice restore integrale, sovrascrivendo il WordPress esistente e modificandolo poi solo ove necessario (es. nei dati di accesso al db in wp-config.php); tranne in casi particolari sconsigliamo tale procedura, più semplice e veloce ma sicuramente meno efficace, lasciandone comunque la valutazione dell’opportunità all’utente.
  • tra la cancellazione del vecchio servizio ed il momento in cui l’utente avrà completato il restore dei propri contenuti ci sarà ovviamente un down del servizio; la lunghezza di tale down dipende dal tempo necessario all’utente al restore, essendo comuqnue il tempo da noi impiegato per la cancellazione del vecchio servizio e la creazione del nuovo assommabile a pochi minuti
  • è possibile svolgere operazioni di migrazione più complesse, che non comportano nessun down o, comunque, ne riducono sensibilmente la durata (es: mantenimento di entrambi gli hosting on-line per il periodo necessario alla migrazione e successivo switch degli IP, svolgimento dell’attività in orario notturno o festivo, ecc.: in tali casi, vi preghiamo di segnalarci a mezzo ticket le esigenze specifiche, in modo da poter produrre un preventivo specifico)
  • i servizi email non saranno coinvolti: quindi, non è necessario effettuare alcun backup straordinario di tale servizio.
  • l’attivazione del nuovo hosting comprenderà un anno di servizio a decorrere dalla data di attivazione stessa; nel caso di migrazione da “hosting basic illimitato” non è previsto alcun rimborso per il rateo del vecchio servizio non usufruito
  • nel caso durante la migrazione dei dati vengano dispersi o danneggiati, sarà possibile recuperare i dati dei backup del vecchio servizio hosting per i sette giorni solari precedenti alla richiesta (per maggiori dettagli su costi e modalità:  http://kb.newmedialabs.it/?View=entry&EntryID=88
  • se lo spazio web occupato dal vostro sito supera 1 GB (taglio base per il piano Hosting WordPress): contattateci per un preventivo specifico

 

qualità  di invio degli SMS

NOTA

La scelta tra tre differenti qualità d’invio è possibile solo per i servizi personalizzati, con accesso diretto al gateway (e destinati quindi a utenti con traffico rilevante, superiore a 5000 SMS/mese).
Per tutti gli utenti del servizio diretto (utilizzabile dal nostro pannello di controllo o tramite i nostri script) tutti gli invii avvenono automaticamente in “qualità alta”


Bassa Qualità

  • Consegna dei messaggi al terminale mobile: entro qualche minuto, la consegna sui servizi di Bassa Qualità è da ritenersi “Best Effort” (non garantita).
  • Notifica di avvenuta ricezione SMS: non disponibile.
  • personalizzazione mittente: non disponibile.
Media Qualità
  • Consegna dei messaggi al terminale mobile: entro pochi secondi, la consegna è garantita.
  • Notifica di avvenuta ricezione SMS: non disponibile.
  • personalizzazione mittente: disponibile, ma non garantito (dipende sia dal circuito d’invio selezionato dal sistema, sia dal destinatario; non è prevedibile a priori)
    Personalizzazione mittente: 13 caratteri numerici (es.: +393350000000) o 11 caratteri alfanumerico (es.: Nomeazienda)
Alta Qualità
  • Consegna dei messaggi al terminale mobile: entro pochi secondi, la consegna è garantita.
  • Notifica di avvenuta ricezione SMS: opzionale (la notifica di avvenuta ricezione ha il costo di un SMS)
  • personalizzazione mittente: disponibile e garantito
    Personalizzazione mittente: 13 caratteri numerici (es.: +393350000000) o 11 caratteri alfanumerico (es.: Nomeazienda)

script per l’invio di SMS

USO DIRETTO DEL GATEWAY:
 
E’ possibile inviare SMS direttamente dalle tue pagine od applicazioni web, effettuando una chiamata HTTP al nostro stesso gateway sms.
Tale chiamata può essere fatta digitando direttamente l’indirizzo nella barra degli indirizzi di un browser, oppure effettuata automaticamente da programma (php, asp, java, perl).
Dalle tue pagine accedi via modo GET oppure POST all’ indirizzo del gateway passando i seguenti parametri:

  • user è il numero del tuo abbonamento rubalo.it, deve venire indicato in ogni chiamata, es:1409
  • word è la password del tuo servizio sms, deve venire indicata in ogni chiamata, es:X0nosXa
  • dest è il numero telefonico del destinatario oppure una lista di numeri di destinatari, da indicare solo negli invii, es:3383457121 oppure 3381234567;33398765432
  • mitt è il numero o nome del mittente che vuoi indicare, da indicare solo negli invii, es:+393371234568 oppure “XYZ spa”
  • body è il testo del messaggio, sino ad un massimo di 160 caratteri, da indicare solo negli invii, es:messaggio+di+prova
  • op è la operazione da compiere, deve sempre venire indicato e può essere solamente uno di questi valori:
    • invia1 (invia-uno) per inviare un singolo sms
    • multiplo per inviare un sms a molti destinatari
    • credito per leggere il credito rimasto
    • report per leggere il report degli ultimi invii o ricariche effettuati.

Nota che tutti i paramentri dovranno venire codificati per il web (urlencode) sostituendo gli spazi con + ed i caratteri particolari con i relativi codici http.
 
RESPONSO:
La tua pagina od applicazione dovrà poi leggere il responso ottenuto dal gateway per ricavarne le informazioni desiderate e l’esito della operazione.
Il responso sarà costituito da una stringa di testo semplice ed avrà un formato facilmente leggibile sia direttamente che da programma.
Se la operazione richiesta ha avuto esito positivo la stringa ritornata inizierà con i caratteri OK! mentre inizierà con KO! se ci sono stati problemi.
A tali primi caratteri seguiranno i dati richiesti (credito/report) oppure una descrizione dei messaggi inviati oppure ancora una descrizione dell’errore verificatosi.

ESEMPI DI INDIRIZZI DA CHIAMARE:

esempio di chiamata per leggere il credito rimasto:

http://cpanel.rubalo.it/smsgate.php?user=1409&word=gh28yUT53&op=credito

che restituirà un responso di questo genere:

OK!
credito=427


esempio di chiamata per leggere il report degli utimi invii effettuati e ricariche:

http://cpanel.rubalo.it/smsgate.php?user=5532&word=Hjk99Rt6&op=report

che restituirà un responso di questo genere:

OK! log invii:
(data operazione esito destinatario costo)
2010-01-18 10:22:15 ricarica ok 1000
2010-01-18 10:28:03 invio singolo ok +39338351234561 -1
2010-01-18 10:37:21 invio multiplo ok +393342524231,+393385567842,+393337432165 -3
2010-01-18 10:38:52 invio singolo ok +393374213567 -1


esempio di chiamata per inviare un singolo messaggio:

http://cpanel.rubalo.it/smsgate.php?user=4003&word=grAz87We&op=invia1&dest=393381234567&mitt=rubalo&body=messaggio+di+prova

che invierà il messaggio e fornirà un responso di questo genere:

OK!
da XYZ srl a +3933456789421
responso = +OK

qualora viceversa vi fossero dei problemi, allora il responso restituito dal gateway sarà:

KO!
descrizione dell’errore o problema

dove la descrizione dell’errore permetterà di identificarne la natura e correggerlo.
 
Gli errori più comuni comprendono:
– utente sconosciuto, assente o non autorizzato che indica problemi di autenticazione (user/word);
– destinatario assente o malformato quando il parametro manca o non ha il formato consentito;
– mittente assente o malformato quando il parametro manca o non ha il formato consentito;
– impossibile inviare per mancanza di credito quando il credito rimasto non basta per l’invio;
– sms gateway non raggiungibile indica down del server sms oppure indirizzo errato;

UTILIZZO DA PROGRAMMA:
Da programma è possibile chiamare il gateway sms come se fosse un file remoto, ad esempio con fopen/fget/fclose in php:

//prepara url da chiamare
$url=$indirizzo_del_gateway;
$url.=”?user=4003&word=grAz87We&op=invia1″;
$url.=”&dest=”.urlencode($numero_del_destinatario);
$url.=”&mitt”.urlencode($mittente_del_sessaggio);
$url.=”&body=”.urlencode($testo_del_messaggio);

//effettua la chiamata
$sms_conn=fopen($url,”r”);
$responso=fget($sms_conn,1024);
fclose($sms_conn);

//interpreta il responso
if(stristr($response,”OK!”)){
//…istruzioni per gestire esito positivo…
}else{
//…istruzioni per gestire errore…
};


INVIO MULTIPLO:
E’possibile inviare lo stesso messaggio sino a 40 diversi destinatari con una singola operazione.
Per farlo basterà porre il parametro op=multiplo e come destinatario (dest) indicare un elenco di numeri telefonici dei destinatari separati da punti e virgola (urlencoded=%3B).

http://cpanel.rubalo.it/smsgate.php?user=2743&word=z3nz3r0&op=multiplo&dest=3381234567%3B3335524869%3B3312831547&mitt=rubalo&body=messaggio+di+prova

Fatal error: Allowed memory size of x bytes exhausted (tried to allocate y bytes) in yyyyyy on line zzz

Questo è un messaggio d’errore abbastanza diffuso.

Normalmente si presenta come:

 

 Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate yyy bytes) in script.php on line zzz

 

yyy può essere un valore qualsiasi (normalmente basso, poche decine di bytes)

script.php indicherà l’URL completo dello script che è andato in errore

zzz sarà la linea dello script che ha causato l’errore

L’errore è banalmente determinato dall’esaurimento della memoria RAM allocata ed utilizzabile. Ciò può esser causato da:

  • un bug del codice che effettua chiamate ricorsive, determinando quindi un esaurimento di risorse
  • la presenza nel codice di malware che determina un consumo di risorse eccessivo
  • codice non ottimizzato
  • oppure inffine dalla effettiva necessità di maggiori risorse per il vostro sito rispetto a quelle disponibili

Nei primi tre casi: dovete effettuare un’analisi del codice, relativo debug, individuare il problema e risolverlo.

(NOTA: se utilizzate un CMS tipo WordPress, Joomla, Drupal esistono delle casistiche abbastanza comuni che determinano questo tipo di errore; consigliamo di fare riferimento agli specifici forum di supporto)

Nel quarto caso, contattate il nostro ufficio commerciale per valutare le possibili soluzioni.

 


	

E’ possibile effettuare modifiche al php.ini?

In un ambiente shared, il php.ini è comune a tutti gli utenti che condividono lo stesso server.
Quindi, qualsiasi modifica al php.ini esistente va valutato molto attentamente, per le conseguenze che potrebbe avere sia su tutti gli altri utenti, sia sulle prestazioni del server.
Per questo motivo, non è possibile effettuare modifiche o personalizzazioni al php.ini.
A questo proposito accettiamo suggerimenti e segnalazioni, che possano permettere di rendere l’ambiente più flessibile e performante; tutte saranno prese in considerazione dai nostri tecnici e può darsi che, dopo le opportune verifiche, vengano anche adottate per i futuri nuovi server.

DOCUMENT_ROOT su server Windows

 

La variabile

$_SERVER['DOCUMENT_ROOT']

di default non è attiva sui server windows. Dovrai inserire il codice sotto riportato all’inizio della tua applicazione in PHP per poter utilizzare tale variabile

 

 

// ci accertiamo che la variabile $_SERVER['DOCUMENT_ROOT'] sia attiva
 if(!isset($_SERVER['DOCUMENT_ROOT'])){ if(isset($_SERVER['SCRIPT_FILENAME'])){
 $_SERVER['DOCUMENT_ROOT'] = str_replace( '\', '/', substr($_SERVER['SCRIPT_FILENAME'], 0, 0-strlen($_SERVER['PHP_SELF'])));
 }; };
 if(!isset($_SERVER['DOCUMENT_ROOT'])){ if(isset($_SERVER['PATH_TRANSLATED'])){
 $_SERVER['DOCUMENT_ROOT'] = str_replace( '\', '/', substr(str_replace('\\', '\', $_SERVER['PATH_TRANSLATED']), 0, 0-strlen($_SERVER['PHP_SELF'])));
 }; };
 // la variabile $_SERVER['DOCUMENT_ROOT'] è ora attiva e puoi utilizzarla

 

Come si effettua l’upload dei files via PHP?

Di seguito riportiamo un semplice esempio di script per l’upload di file via browser

 

[box]

<?
/********************* VARIABILI DA SETTARE ********************/
 // Directory dove salvare i files Uploadati ( chmod 777 o permessi di scrittura, percorso assoluto)
 $upload_dir = $_SERVER["DOCUMENT_ROOT"] . "/upload";
// Eventuale nuovo nome da dare al file uploadato
 $new_name = "";
// Se $new_name è vuota, il nome sarà lo stesso del file uploadato
 $file_name = ($new_name) ? $new_name : $_FILES["upfile"]["name"];
if(trim($_FILES["upfile"]["name"]) == "") {
die("Non hai indicato il file da uploadare !");
}
if(@is_uploaded_file($_FILES["upfile"]["tmp_name"])) {
@move_uploaded_file($_FILES["upfile"]["tmp_name"], "$upload_dir/$file_name") 
 or die("Impossibile spostare il file, controlla l'esistenza o i permessi della directory dove fare l'upload.");
} else {
die("Problemi nell'upload del file " . $_FILES["upfile"]["name"]);
}
echo "L'upload del file " . $_FILES["upfile"]["name"] . " è avvenuto correttamente";
?>

[/box]

MySql: impostare data in formato standard europeo ovvero gg-mm-aaaa

Con una query sql si può riportare una data specifica oppure,  con la funzione now() al posto della data, inserire la data corrente

1) impostare il campo dove inserire la data come stringa;
2) INSERT INTO tabella(‘campo’) VALUES (DATE_FORMAT(‘2009-10-04 22:23:00’, ‘%d-%m-%Y’))

Per ulteriori informazioni si consulti http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format