Re: apache php e problemi nell' upload dei file
Il 16 maggio 2023 12:17:23 UTC, Diego Zuccato ha scritto: > >Altro problema: se si adotta un framework per un progetto a lunga scadenza (10 >anni o più), poi regolarmente ci si scontra con incompatibilità (era per >PHP5.6, con 8.1 quella versione non funziona più e devi mettere la nuova, che >però ha un'API diversa e finisci per dover riscrivere tutto o peggio ti >introduce dei bug subdoli), catene di dipendenze infinite (con relativi >problemi di sicurezza), e chi viene per aiutarti (lo sbarbatello che "sa >programmare il web") non conosce quel framework perché troppo vecchio e fuori >moda e quindi comunque deve studiarlo da zero. > >Per non parlare di un problema di sicurezza: un bug nel framework ti lascia >esposto a molti più attacchi automatici. > Che è esattamente il perché quando programmavo in COBOL reinventavo spesso una nuova ruota. /paride -- Inviato dal mio dispositivo Android con K-9 Mail. Perdonate la brevità.
Re: apache php e problemi nell' upload dei file
Ciao, Il giorno lun, 15/05/2023 alle 17.04 +0200, Giuseppe Naponiello ha scritto: [...] > sys_get_temp_dir e altre funzioni simili di php mi danno come risultato > sempre /tmp/, se però provo "new \SplFileObject("/tmp/tmp-test.txt", > "a+");" me lo scrive correttamente in systemd-private.xxx..xyz/tmp/ Puoi confermare che lo trovi in /tmp/systemd-/tmp e non in /tmp/systemd- (senza l'ulteriore /tmp finale)? Ciao, Giuseppe
Re: apache php e problemi nell' upload dei file
Il giorno mar, 16/05/2023 alle 12.54 +0200, Giuseppe Sacco ha scritto: > Ciao Giuseppe, [...] > Per come la vedo io, il sistema dovrebbe funzionare in questo modo: > apache2 > parte con una /tmp sempre diversa perché nel file > /lib/systemd/system/apache2.service c'è scritto PrivateTmp=true. A questo > punto, quando systemd fa partire il processo di apache, gli imposta una > specie di file system privato (un namespace) nel quale il path /tmp/ > corrisponde ad una directory che dal punto di vista globale è > /tmp/systemd A quel punto, qualsiasi altro processo avviato da > apache2 > vedrà la stessa /tmp. [...] Puoi anche fare la controprova disabilitando PrivateTmp per apache2 e verificando che questo sia proprio la causa del problema. Per disabilitarlo, crea il file /etc/systemd/system/apache2.service.d/noprivatetmp.conf con le due righe seguenti: [Service] PrivateTmp=false e poi dai i due comandi, da root, per rileggere i file e riavviare apache2: systemctl daemon-reload systemctl restart apache2 Ciao, Giuseppe
Re: apache php e problemi nell' upload dei file
Beh, anche le mie classi di interfacciamento al db fanno abbastanza ridere, di base (p.e. le query mi ritornano comunque un array coi risultati, no iteratori, ho preferito la semplicità, non avendo tabelle enormi). Però mi è riuscita direi abbastanza bene la gestione delle join :) Il problema è che gli applicativi o sono fire o tendono a crescere stratificandosi, o partono come F e dopo qualche anno te li fanno estendere (meno male che avevo previsto una discreta modularità in partenza :) ). Purtroppo i framework che avevo guardato al tempo mi avrebbero richiesto, per iniziare ad usarli decentemente, più tempo di quello che avevo a disposizione per realizzare l'applicativo... Altro problema: se si adotta un framework per un progetto a lunga scadenza (10 anni o più), poi regolarmente ci si scontra con incompatibilità (era per PHP5.6, con 8.1 quella versione non funziona più e devi mettere la nuova, che però ha un'API diversa e finisci per dover riscrivere tutto o peggio ti introduce dei bug subdoli), catene di dipendenze infinite (con relativi problemi di sicurezza), e chi viene per aiutarti (lo sbarbatello che "sa programmare il web") non conosce quel framework perché troppo vecchio e fuori moda e quindi comunque deve studiarlo da zero. Per non parlare di un problema di sicurezza: un bug nel framework ti lascia esposto a molti più attacchi automatici. Diego Il 16/05/2023 12:56, Giuseppe Naponiello ha scritto: oddio che bello, non sono solo!!! Nel mio caso, lavorando tanto con i db, ho visto (ma potrei sbagliarmi) che i vari framework sfruttano davvero poco le potenzialità di un db come postgresql o anche solo mysql...ma ripeto, sarà perché non conosco a fondo le potenzialità di un framework come laravel Il 16/05/23 11:47, Diego Zuccato ha scritto: Mah... Ogni volta che ho provato a mettermi dietro ad un framework, mi sono ritrovato che era insufficiente o troppo pesante per le mie esigenze, oppure pressoché incomprensibile (= quando fossi riuscito a capire come usarlo sarebbe già stato obsoleto). Visto che lo sviluppo di applicativi web è per me molto secondario, ho finito per crearmi negli ultimi 15 anni il mio carrozzone di classi che alla fine è compatibile con tutto (da 5.6 a 8.1) :) Sarebbe però interessante un confronto dei vari framework maturi in circolazione. Diego Il 16/05/2023 11:41, Giuseppe Naponiello ha scritto: Ciao Lorenzo, Sono uno sviluppatore PHP, non userò direttamente la funzione da decenni (lavoro con i framework) Prima o poi dovrò decidermi anch'io! Non lo faccio solo per pigrizia, ho provato Laravel, i vantaggi sono evidenti ma l'abitudine è dura da modificare!!! La mia esperienza è che il 99.99% degli errori "PHP/java/swift non mi trova il file caricato" è dovuto al fatto che il form html non ha correttamente settato l'enctype a "multipart/form-data", e quindi invece del file viene caricato il suo nome. Passando i dati (e il file) via FormData() non mi sembrava fosse necessario specificare l'enctype del form, comunque molto interessante, approfondisco! Grazie Il 16/05/23 10:44, Lorenzo Breda ha scritto: Il lun 15 mag 2023, 17:04 Giuseppe Naponiello ha scritto: Il problema è che non trovo una soluzione per caricare un file da interfaccia web in una cartella del server: con fetch API e formData mando il file da caricare al server, che con un funzione php dovrebbe spostarlo da tmp alla destinazione finale con la classica funzione "move_upload_file", l'errore, come previsto, è che php cerca il file da spostare in /tmp/ e non in systemd Buongiorno, Non mi risulta che move_uploaded_file abbia problemi con systemd. Sono uno sviluppatore PHP, non userò direttamente la funzione da decenni (lavoro con i framework) ma sotto quello c'è. Il fatto che PHP veda tmp come cartella temporanea invece di quella reale è un effetto ottico di systemd, in realtà legge e scrive correttamente in quella giusta. La mia esperienza è che il 99.99% degli errori "PHP/java/swift non mi trova il file caricato" è dovuto al fatto che il form html non ha correttamente settato l'enctype a "multipart/form-data", e quindi invece del file viene caricato il suo nome. Buona giornata! -- Lorenzo Breda -- Diego Zuccato DIFA - Dip. di Fisica e Astronomia Servizi Informatici Alma Mater Studiorum - Università di Bologna V.le Berti-Pichat 6/2 - 40127 Bologna - Italy tel.: +39 051 20 95786
Re: apache php e problemi nell' upload dei file
oddio che bello, non sono solo!!! Nel mio caso, lavorando tanto con i db, ho visto (ma potrei sbagliarmi) che i vari framework sfruttano davvero poco le potenzialità di un db come postgresql o anche solo mysql...ma ripeto, sarà perché non conosco a fondo le potenzialità di un framework come laravel Il 16/05/23 11:47, Diego Zuccato ha scritto: Mah... Ogni volta che ho provato a mettermi dietro ad un framework, mi sono ritrovato che era insufficiente o troppo pesante per le mie esigenze, oppure pressoché incomprensibile (= quando fossi riuscito a capire come usarlo sarebbe già stato obsoleto). Visto che lo sviluppo di applicativi web è per me molto secondario, ho finito per crearmi negli ultimi 15 anni il mio carrozzone di classi che alla fine è compatibile con tutto (da 5.6 a 8.1) :) Sarebbe però interessante un confronto dei vari framework maturi in circolazione. Diego Il 16/05/2023 11:41, Giuseppe Naponiello ha scritto: Ciao Lorenzo, Sono uno sviluppatore PHP, non userò direttamente la funzione da decenni (lavoro con i framework) Prima o poi dovrò decidermi anch'io! Non lo faccio solo per pigrizia, ho provato Laravel, i vantaggi sono evidenti ma l'abitudine è dura da modificare!!! La mia esperienza è che il 99.99% degli errori "PHP/java/swift non mi trova il file caricato" è dovuto al fatto che il form html non ha correttamente settato l'enctype a "multipart/form-data", e quindi invece del file viene caricato il suo nome. Passando i dati (e il file) via FormData() non mi sembrava fosse necessario specificare l'enctype del form, comunque molto interessante, approfondisco! Grazie Il 16/05/23 10:44, Lorenzo Breda ha scritto: Il lun 15 mag 2023, 17:04 Giuseppe Naponiello ha scritto: Il problema è che non trovo una soluzione per caricare un file da interfaccia web in una cartella del server: con fetch API e formData mando il file da caricare al server, che con un funzione php dovrebbe spostarlo da tmp alla destinazione finale con la classica funzione "move_upload_file", l'errore, come previsto, è che php cerca il file da spostare in /tmp/ e non in systemd Buongiorno, Non mi risulta che move_uploaded_file abbia problemi con systemd. Sono uno sviluppatore PHP, non userò direttamente la funzione da decenni (lavoro con i framework) ma sotto quello c'è. Il fatto che PHP veda tmp come cartella temporanea invece di quella reale è un effetto ottico di systemd, in realtà legge e scrive correttamente in quella giusta. La mia esperienza è che il 99.99% degli errori "PHP/java/swift non mi trova il file caricato" è dovuto al fatto che il form html non ha correttamente settato l'enctype a "multipart/form-data", e quindi invece del file viene caricato il suo nome. Buona giornata! -- Lorenzo Breda
Re: apache php e problemi nell' upload dei file
Ciao Giuseppe, Il giorno lun, 15/05/2023 alle 17.04 +0200, Giuseppe Naponiello ha scritto: > Buongiorno, > vecchio problema a cui non ho trovato una soluzioni "pulite". > > Con l'introduzione di systemd i browser (e tutte le altre applicazioni > che ne usufruiscono) non scrivono più in /tmp/ ma in > /tmp/systemd-private-xxx-apache2.service.blablabla...non vado oltre > perché tanto lo sapete meglio di me di sicuro. [...] Per come la vedo io, il sistema dovrebbe funzionare in questo modo: apache2 parte con una /tmp sempre diversa perché nel file /lib/systemd/system/apache2.service c'è scritto PrivateTmp=true. A questo punto, quando systemd fa partire il processo di apache, gli imposta una specie di file system privato (un namespace) nel quale il path /tmp/ corrisponde ad una directory che dal punto di vista globale è /tmp/systemd A quel punto, qualsiasi altro processo avviato da apache2 vedrà la stessa /tmp. Ora, se l'interprete php è quello della libreria di apache, vienne eseguito dallo stesso processo (credo) e quindi vede la stessa /tmp; se invece è un fast cgi, allora comunicano via socket. In questo caso dovresti controllare quale servizio attiva il fast cgi e, a quel punto, hai la possibilità di modificare la /tmp del processo fast cgi in modo che sia la stessa di quello di apache usando il comando JoinsNamespaceOf=apache2.service nel primo dei due. Per capire come apache avvia il php devi controllare il sito che hai configurato. Ciao, Giuseppe
Re: apache php e problemi nell' upload dei file
Mah... Ogni volta che ho provato a mettermi dietro ad un framework, mi sono ritrovato che era insufficiente o troppo pesante per le mie esigenze, oppure pressoché incomprensibile (= quando fossi riuscito a capire come usarlo sarebbe già stato obsoleto). Visto che lo sviluppo di applicativi web è per me molto secondario, ho finito per crearmi negli ultimi 15 anni il mio carrozzone di classi che alla fine è compatibile con tutto (da 5.6 a 8.1) :) Sarebbe però interessante un confronto dei vari framework maturi in circolazione. Diego Il 16/05/2023 11:41, Giuseppe Naponiello ha scritto: Ciao Lorenzo, Sono uno sviluppatore PHP, non userò direttamente la funzione da decenni (lavoro con i framework) Prima o poi dovrò decidermi anch'io! Non lo faccio solo per pigrizia, ho provato Laravel, i vantaggi sono evidenti ma l'abitudine è dura da modificare!!! La mia esperienza è che il 99.99% degli errori "PHP/java/swift non mi trova il file caricato" è dovuto al fatto che il form html non ha correttamente settato l'enctype a "multipart/form-data", e quindi invece del file viene caricato il suo nome. Passando i dati (e il file) via FormData() non mi sembrava fosse necessario specificare l'enctype del form, comunque molto interessante, approfondisco! Grazie Il 16/05/23 10:44, Lorenzo Breda ha scritto: Il lun 15 mag 2023, 17:04 Giuseppe Naponiello ha scritto: Il problema è che non trovo una soluzione per caricare un file da interfaccia web in una cartella del server: con fetch API e formData mando il file da caricare al server, che con un funzione php dovrebbe spostarlo da tmp alla destinazione finale con la classica funzione "move_upload_file", l'errore, come previsto, è che php cerca il file da spostare in /tmp/ e non in systemd Buongiorno, Non mi risulta che move_uploaded_file abbia problemi con systemd. Sono uno sviluppatore PHP, non userò direttamente la funzione da decenni (lavoro con i framework) ma sotto quello c'è. Il fatto che PHP veda tmp come cartella temporanea invece di quella reale è un effetto ottico di systemd, in realtà legge e scrive correttamente in quella giusta. La mia esperienza è che il 99.99% degli errori "PHP/java/swift non mi trova il file caricato" è dovuto al fatto che il form html non ha correttamente settato l'enctype a "multipart/form-data", e quindi invece del file viene caricato il suo nome. Buona giornata! -- Lorenzo Breda -- Diego Zuccato DIFA - Dip. di Fisica e Astronomia Servizi Informatici Alma Mater Studiorum - Università di Bologna V.le Berti-Pichat 6/2 - 40127 Bologna - Italy tel.: +39 051 20 95786
Re: apache php e problemi nell' upload dei file
Il mar 16 mag 2023, 11:41 Giuseppe Naponiello ha scritto: > Ciao Lorenzo, > > Sono uno sviluppatore PHP, non userò direttamente la funzione da decenni > (lavoro con i framework) > > Prima o poi dovrò decidermi anch'io! Non lo faccio solo per pigrizia, ho > provato Laravel, i vantaggi sono evidenti ma l'abitudine è dura da > modificare!!! > Un altro mondo davvero. Passando i dati (e il file) via FormData() non mi sembrava fosse necessario > specificare l'enctype del form, comunque molto interessante, approfondisco! > FormData dovrebbe usare l'encoding corretto. Comunque un'occhiata alla request per vedere se c'è tutto dalla, se c'è dovrebbe correttamente funzionare passando come primo parametro il nome effettivo del file: move_uploaded_file($_FILES["nome_campo"]["tmp_name"], $destinazione) -- Lorenzo Breda >
Re: apache php e problemi nell' upload dei file
Ciao Lorenzo, Sono uno sviluppatore PHP, non userò direttamente la funzione da decenni (lavoro con i framework) Prima o poi dovrò decidermi anch'io! Non lo faccio solo per pigrizia, ho provato Laravel, i vantaggi sono evidenti ma l'abitudine è dura da modificare!!! La mia esperienza è che il 99.99% degli errori "PHP/java/swift non mi trova il file caricato" è dovuto al fatto che il form html non ha correttamente settato l'enctype a "multipart/form-data", e quindi invece del file viene caricato il suo nome. Passando i dati (e il file) via FormData() non mi sembrava fosse necessario specificare l'enctype del form, comunque molto interessante, approfondisco! Grazie Il 16/05/23 10:44, Lorenzo Breda ha scritto: Il lun 15 mag 2023, 17:04 Giuseppe Naponiello ha scritto: Il problema è che non trovo una soluzione per caricare un file da interfaccia web in una cartella del server: con fetch API e formData mando il file da caricare al server, che con un funzione php dovrebbe spostarlo da tmp alla destinazione finale con la classica funzione "move_upload_file", l'errore, come previsto, è che php cerca il file da spostare in /tmp/ e non in systemd Buongiorno, Non mi risulta che move_uploaded_file abbia problemi con systemd. Sono uno sviluppatore PHP, non userò direttamente la funzione da decenni (lavoro con i framework) ma sotto quello c'è. Il fatto che PHP veda tmp come cartella temporanea invece di quella reale è un effetto ottico di systemd, in realtà legge e scrive correttamente in quella giusta. La mia esperienza è che il 99.99% degli errori "PHP/java/swift non mi trova il file caricato" è dovuto al fatto che il form html non ha correttamente settato l'enctype a "multipart/form-data", e quindi invece del file viene caricato il suo nome. Buona giornata! -- Lorenzo Breda
Re: apache php e problemi nell' upload dei file
Ciao, Diego le 2 direttive che mi indichi sono commentate anche nel mio caso. Il 16/05/23 10:46, Diego Zuccato ha scritto: Io uso php-fpm e non ha nessun problema a trovare la cartella dove apache mette gli UL... Nel php.ini sys_temp_dir è commentata. Magari verifica anche upload_tmp_dir (anche questa da me è commentata). In tutta /etc/apache2 gli unici riferimenti alla stringa /tmp sono per DavLockDB all'interno dei vhost. Il mio sistema è stato installato seguendo (abbastanza fedelmente) la guida "the perfect server" per ISPConfig3. Diego Il 16/05/2023 09:42, Federico Di Gregorio ha scritto: On 15/05/23 18:53, Giuseppe Naponiello wrote: ok, quindi in php.ini devo decommentare la sezione che gestisce la cartella tmp: ; Directory where the temporary files should be placed. ; Defaults to the system default (see sys_get_temp_dir) ;sys_temp_dir = "/tmp" e invece di /tmp inserire il percorso corretto, cioè quello del servizio di apache? Giusto? Temo di no. Quando Apache viene riavviato la directory usata come /tmp potrebbe cambiare e il PHP non la troverebbe più. federico Federico Di Gregorio federico.digrego...@dndg.it DNDG srl http://dndg.it heisenbug /hi:'zen-buhg/ /n./ [from Heisenberg's Uncertainty Principle in quantum physics] A bug that disappears or alters its behavior when one attempts to probe or isolate it.
Re: apache php e problemi nell' upload dei file
Ciao Federico, Quando Apache viene riavviato la directory usata come /tmp potrebbe cambiare e il PHP non la troverebbe più. Infatti, questo era il mio grande dubbio! Il 16/05/23 09:42, Federico Di Gregorio ha scritto: On 15/05/23 18:53, Giuseppe Naponiello wrote: ok, quindi in php.ini devo decommentare la sezione che gestisce la cartella tmp: ; Directory where the temporary files should be placed. ; Defaults to the system default (see sys_get_temp_dir) ;sys_temp_dir = "/tmp" e invece di /tmp inserire il percorso corretto, cioè quello del servizio di apache? Giusto? Temo di no. Quando Apache viene riavviato la directory usata come /tmp potrebbe cambiare e il PHP non la troverebbe più. federico Federico Di Gregorio federico.digrego...@dndg.it DNDG srl http://dndg.it heisenbug /hi:'zen-buhg/ /n./ [from Heisenberg's Uncertainty Principle in quantum physics] A bug that disappears or alters its behavior when one attempts to probe or isolate it.
Re: apache php e problemi nell' upload dei file
Ciao Piviul, non sono molto pratico ma non credo tu sia sulla strada giusta io invece sono sicuro di NON essere sulla strada giusta!!! cat $(ls /etc/apache2/mods-enabled/php*.load) # Conflicts: php5 # Depends: mpm_prefork LoadModule php7_module /usr/lib/apache2/modules/libphp7.4.so Il 15/05/23 20:03, Piviul ha scritto: Il 15/05/23 18:53, Giuseppe Naponiello ha scritto: ok, quindi in php.ini devo decommentare la sezione che gestisce la cartella tmp: ; Directory where the temporary files should be placed. ; Defaults to the system default (see sys_get_temp_dir) ;sys_temp_dir = "/tmp" e invece di /tmp inserire il percorso corretto, cioè quello del servizio di apache? Giusto? Ciao Giuseppe, non sono molto pratico ma non credo tu sia sulla strada giusta. In apache2 come carichi php? In /etc/apache2/mods-enabled/ dove punta il .load per php? In altre parole posta l'otput di $ cat $(ls /etc/apache2/mods-enabled/php*.load) Piviul
Re: apache php e problemi nell' upload dei file
Io uso php-fpm e non ha nessun problema a trovare la cartella dove apache mette gli UL... Nel php.ini sys_temp_dir è commentata. Magari verifica anche upload_tmp_dir (anche questa da me è commentata). In tutta /etc/apache2 gli unici riferimenti alla stringa /tmp sono per DavLockDB all'interno dei vhost. Il mio sistema è stato installato seguendo (abbastanza fedelmente) la guida "the perfect server" per ISPConfig3. Diego Il 16/05/2023 09:42, Federico Di Gregorio ha scritto: On 15/05/23 18:53, Giuseppe Naponiello wrote: ok, quindi in php.ini devo decommentare la sezione che gestisce la cartella tmp: ; Directory where the temporary files should be placed. ; Defaults to the system default (see sys_get_temp_dir) ;sys_temp_dir = "/tmp" e invece di /tmp inserire il percorso corretto, cioè quello del servizio di apache? Giusto? Temo di no. Quando Apache viene riavviato la directory usata come /tmp potrebbe cambiare e il PHP non la troverebbe più. federico Federico Di Gregorio federico.digrego...@dndg.it DNDG srl http://dndg.it heisenbug /hi:'zen-buhg/ /n./ [from Heisenberg's Uncertainty Principle in quantum physics] A bug that disappears or alters its behavior when one attempts to probe or isolate it. -- Diego Zuccato DIFA - Dip. di Fisica e Astronomia Servizi Informatici Alma Mater Studiorum - Università di Bologna V.le Berti-Pichat 6/2 - 40127 Bologna - Italy tel.: +39 051 20 95786
Re: apache php e problemi nell' upload dei file
Il lun 15 mag 2023, 17:04 Giuseppe Naponiello ha scritto: > Il problema è che non trovo una soluzione per caricare un file da > interfaccia web in una cartella del server: con fetch API e formData > mando il file da caricare al server, che con un funzione php dovrebbe > spostarlo da tmp alla destinazione finale con la classica funzione > "move_upload_file", l'errore, come previsto, è che php cerca il file da > spostare in /tmp/ e non in systemd > Buongiorno, Non mi risulta che move_uploaded_file abbia problemi con systemd. Sono uno sviluppatore PHP, non userò direttamente la funzione da decenni (lavoro con i framework) ma sotto quello c'è. Il fatto che PHP veda tmp come cartella temporanea invece di quella reale è un effetto ottico di systemd, in realtà legge e scrive correttamente in quella giusta. La mia esperienza è che il 99.99% degli errori "PHP/java/swift non mi trova il file caricato" è dovuto al fatto che il form html non ha correttamente settato l'enctype a "multipart/form-data", e quindi invece del file viene caricato il suo nome. Buona giornata! -- Lorenzo Breda
Re: apache php e problemi nell' upload dei file
On 15/05/23 18:53, Giuseppe Naponiello wrote: ok, quindi in php.ini devo decommentare la sezione che gestisce la cartella tmp: ; Directory where the temporary files should be placed. ; Defaults to the system default (see sys_get_temp_dir) ;sys_temp_dir = "/tmp" e invece di /tmp inserire il percorso corretto, cioè quello del servizio di apache? Giusto? Temo di no. Quando Apache viene riavviato la directory usata come /tmp potrebbe cambiare e il PHP non la troverebbe più. federico Federico Di Gregorio federico.digrego...@dndg.it DNDG srl http://dndg.it heisenbug /hi:'zen-buhg/ /n./ [from Heisenberg's Uncertainty Principle in quantum physics] A bug that disappears or alters its behavior when one attempts to probe or isolate it.