Koozali.org: home of the SME Server

versioni sme server e applicazioni php datate

Offline draven

  • ***
  • 53
  • +0/-0
versioni sme server e applicazioni php datate
« on: October 14, 2010, 04:33:46 PM »
Questo post è a segnalazione di quanto successo nei giorni scorsi, con la presunzione di poter aiutare qualcuno in futuro:
configurazione originale:
sme server 7.5 beta 1
php version 4.3.9
applicazione scritta in php 4 con frequenti funzioni di upload file tramite l'utilizzo di @move_uploaded_file.

nuova configurazione:
sme server 8.0 beta 5
php version 5.2.10
stessa applicazione

problema:
entrando nell'area amministrazione dell'applicazione non si riesce più ad eseguire nessuna funzione di upload file.

prove fatte:
- controllo del maxfilesize;
- controllo permessi delle directory della Primary ibay;
- controllo uguaglianza impostazioni tra il nuovo e il vecchio php.ini;
- creazione di una nuova ibay.

ultima spiaggia:
controllando il codice, anche se era identico a quello del vecchio sme server, in una delle pagine che restituiva errore, mi sono fatto passare una variabile contenente un array con tutte le info sul file che la funzione cercava di uploadare. La stampa di quell'array riportava quanto segue:

Array
(
    [upfile] => Array
        (
            [name] => Polaris_ita_mod.pdf
            [type] =>
            [tmp_name] =>
            [error] => 6
            [size] => 0
        )

)

dove [error] => 6 sta a significare che manca la directory temporanea utilizzata dalla funzione di upload e, in effetti [tmp_name] è vuota.

soluzione:
cd /home/e-smith/files <------ mi sposto sotto questa directory
mkdir tmp                  <------ creo una nuova directory che chiamo tmp
chmod -R 775 tmp/     <------ assegno i permessi alla directory appena creata
nano /etc/php.ini        <------ edito il file di configurazione del php
inserisco questa riga:
upload_tmp_dir = /home/e-smith/files/tmp
salvo, chiudo e riavvio il demone php... L'applicazione Funziona!

conclusione:
nel file di configurazione di php 4 non è impostata di default nessuna directory temp. e se il file non viene modificato, il demone php utilizzerà la directory /tmp... nel php 5 il file di configurazione .ini è stato lasciato invariato (non c'è infatti nessuna variabile di default che indichi una temp dir) ma, a differenza del 4 se non viene modificato manualmente, tutte le funzioni php che utilizzano la temp dir non funzioneranno.

un saluto a tutti.
« Last Edit: October 14, 2010, 04:36:36 PM by draven »

Offline Stefano

  • *
  • 10,894
  • +3/-0
Re: versioni sme server e applicazioni php datate
« Reply #1 on: October 14, 2010, 06:51:55 PM »
Ciao

mi permetto di fare delle osservazioni/correzioni

Questo post è a segnalazione di quanto successo nei giorni scorsi, con la presunzione di poter aiutare qualcuno in futuro:
configurazione originale:
sme server 7.5 beta 1

o stiamo parlando di una 7.0B5, 7.5 beta 1 o 7.5.1? :-) (pare banale, ma spesso con il versioning ci si incasina..)

Quote
nuova configurazione:
sme server 8.0 beta 5
php version 5.2.10

dovresti passare alla 8B6 quanto prima

Quote
soluzione:
cd /home/e-smith/files <------ mi sposto sotto questa directory
mkdir tmp                  <------ creo una nuova directory che chiamo tmp
chmod -R 775 tmp/     <------ assegno i permessi alla directory appena creata

il percorso non mi sembra una buona scelta, se non altro perchè è nel ramo di dir che finiscono nel backup
cosa ha che non va /tmp?
perchè non creare una dir ad hoc sotto la root, tipo /php_tmp?
(le domande nascono da sincera curiosità)

Quote
nano /etc/php.ini        <------ edito il file di configurazione del php
inserisco questa riga:
upload_tmp_dir = /home/e-smith/files/tmp
salvo, chiudo e riavvio il demone php... L'applicazione Funziona!

ma la tua modifica no, perchè al primo reconfigure perdi la modifica

devi fare le cose secondo la SME's way:
- crei una dir nel ramo templates-custom
Code: [Select]
mkdir -p /etc/e-smith/templates-custom/etc/php.ini
- cerchi il fragment in /etc/e-smith/templates/etc/php.ini che sia adatto per contenere la modifica..
se c'è, lo copi nella directory creata prima e lo modifichi come preferisci
se non c'è, nella dir creata prima crei un file con nome NNnomefile, dove NN sia tale da posizionare correttamente il suo contenuto nel file php.ini, poi lo editi con il contenuto voluto
- espandi il template con
Code: [Select]
expand-template /etc/php.ini
- riavvi il servizio
Code: [Select]
service httpd-e-smith restart

in questo modo la tua personalizzazione sarà stabile nel tempo

Quote
conclusione:
nel file di configurazione di php 4 non è impostata di default nessuna directory temp. e se il file non viene modificato, il demone php utilizzerà la directory /tmp... nel php 5 il file di configurazione .ini è stato lasciato invariato (non c'è infatti nessuna variabile di default che indichi una temp dir) ma, a differenza del 4 se non viene modificato manualmente, tutte le funzioni php che utilizzano la temp dir non funzioneranno.

a meno che la funziona da te usata non sia deprecated in php 5.2 e superiori, ma si aspetta che esista quel parametro in php.ini, direi che dovresti aprire un bug in bugzilla in merito

grazie