Pagina 1 di 2 12 UltimoUltimo
Visualizzazione risultati 1 fino 30 di 34

Discussione: Invision forum e chmod della cartella temp

  1. #1
    fbgame non è connesso Neofita
    Data registrazione
    24-03-2010
    Messaggi
    26

    Exclamation Invision forum e chmod della cartella temp

    Buongiorno...
    Ultimamente ho aggiornato il forum all'ultima versione (4.7.5), aggiornando anche al php8. Tutto funziona bene, se non fosse che quando tento di reinstallare le applicazioni delle quali necessito, riscontro un problema che non mi permette di farlo. L'errore che mi restituisce è il seguente
    Codice HTML:
    Extraction from phar "/membri/.dummy/temp/IPSMPEZITY9.tar" failed: Cannot extract "Application.php" to "/membri/fbgame/applications/telegramshare/Application.php", setting file permissions failed
    dove sembra che non siano settati in maniera corretta i chmod della cartella temp (775/777) e questo mi vieta di portarne a termine l'installazione. Gentilmente potreste controllare? Sottolineo che le altre cartelle, come per esempio /applications in questo specifico caso, sono già settate con i chmod corretti.

    Ne approfitto per sagnalare anche questo possibile problema che mi viene segnalato in amministrazione, giusto per non creare multipost, dove indica funzioni php che in teoria dovrebbero essere escluse.


    Ho provato a cercare probabili soluzioni, ma niente che riguardasse tutto questo. Mi scuso in anticipo se ho sbagliato sezione. Grazie e buona continuazione di giornata.
    Ultima modifica di fbgame : 03-12-2022 alle ore 13.57.01

  2. #2
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Generalmente gli hosting condivisi offrono anche una cartella al di fuori della propria root che per te sarebbe /membri/fbgame/ mentre /membri/.dummy/temp/ è il percorso al di fuori della tua cartella root ma che è nel server condiviso.
    In sintesi è il codice php che erroneamente pensa che non ci siano i permessi necessari invece tale percorso è leggibile.
    Se il tuo CMS consente di impostare una cartella temporanea diversa impostalo altrimenti fatti indicare dove modificare il codice php. Chiedi inoltre se il percorso Application.php deve riferirsi a /membri/fgame/ invece di /membri/.dummy/temp/ dopo aver estratto l'archivio phar che appunto "Application.php" è fuori dalla tua root senza specificare il percorso completo ad esempio /membri/fbgame/Application.php (Application.php dentro la root dell'utente fgame)
    Sempre in alcuni hosting condivisi la versione degli errori è abilitata per facilitare il creatore di siti web, poiché non richiede conoscenze tecniche e quando qualcosa va storto vedrai gli errori su schermo.
    Quindi un server condiviso vuol dire diversi utenti e anche cartella temporanea al di fuori della root.
    Ultima modifica di darbula : 03-12-2022 alle ore 17.47.58

  3. #3
    fbgame non è connesso Neofita
    Data registrazione
    24-03-2010
    Messaggi
    26

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Generalmente gli hosting condivisi offrono anche una cartella al di fuori della propria root che per te sarebbe /membri/fbgame/ mentre /membri/.dummy/temp/ è il percorso al di fuori della tua cartella root ma che è nel server condiviso.
    In sintesi è il codice php che erroneamente pensa che non ci siano i permessi necessari invece tale percorso è leggibile.
    Se il tuo CMS consente di impostare una cartella temporanea diversa impostalo altrimenti fatti indicare dove modificare il codice php. Chiedi inoltre se il percorso Application.php deve riferirsi a /membri/fgame/ invece di /membri/.dummy/temp/ dopo aver estratto l'archivio phar che appunto "Application.php" è fuori dalla tua root senza specificare il percorso completo ad esempio /membri/fbgame/Application.php (Application.php dentro la root dell'utente fgame)
    Sempre in alcuni hosting condivisi la versione degli errori è abilitata per facilitare il creatore di siti web, poiché non richiede conoscenze tecniche e quando qualcosa va storto vedrai gli errori su schermo.
    Quindi un server condiviso vuol dire diversi utenti e anche cartella temporanea al di fuori della root.
    Ciao e grazie della risposta. Sono di fretta e non riesco a rispondere più nel dettaglio. Ho chiesto le cose che hai citato tu, ma loro mi hanno appunto rimandato qui perchè in effetti ci sono già i richiami delle cartelle di estrazione ecc, ma pare che la cartella temp sia quella che permette l'espansione e successiva eliminazione del pacchetto scaricato direttamente dalla loro piattaforma. Ti allego qui l'altra parte del codice di errore per farti capire meglio.

    Codice HTML:
    #0 /membri/fbgame/applications/core/modules/admin/marketplace/marketplace.php(941): PharData->extractTo('/membri/fbgame/...', NULL, true)
    #1 /membri/fbgame/applications/core/modules/admin/marketplace/marketplace.php(280): IPS\core\modules\admin\marketplace\_marketplace->_installApplication(Array, '/membri/.dummy/...')
    #2 /membri/fbgame/system/Dispatcher/Controller.php(107): IPS\core\modules\admin\marketplace\_marketplace->install()
    #3 /membri/fbgame/applications/core/modules/admin/marketplace/marketplace.php(40): IPS\Dispatcher\_Controller->execute()
    #4 /membri/fbgame/system/Dispatcher/Dispatcher.php(153): IPS\core\modules\admin\marketplace\_marketplace->execute()
    #5 /membri/fbgame/*****/index.php(13): IPS\_Dispatcher->run()
    #6 {main}
    Un'alternativa, se il problema non è risolvibile, potrebbe essere quella di chiedere agli autori delle app se possono passarmi il pacchetto in altro modo, in maniera che mandando via ftp il pacchetto già scompattato forse il problema viene aggirato. Il problema è che non tutti sono disposti a farlo perchè alcuni essendo a pagamento non ne avrebbero più il controllo. Speriamo...

    Per quanto riguarda la visualizzazione degli errori del php ecc, non sono in se una limitazione quindi, se nessun maleintenzionato raccoglie i dati recuperabili in alcuni casi dagli errori stessi, per rubare o danneggiare l'account, non ci sono altri problemi.
    Buona serata e grazie ancora!

  4. #4
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Puoi gestire i permessi dalla tua root in poi /membri/fbgame/ non nello spazio condiviso al di fuori della root /membri/.dummy/temp/ poiché è di molti utenti (non solo fbgame)
    Se lo staff altervista non può aiutare, se crei una copia di /membri/fbgame/applications/core/modules/admin/marketplace/marketplace.php alla riga 941 che codice è realmente? Magari quando ho tempo creo un file .tar e estraggo il contenuto per ricreare il problema e se esiste la soluzione.
    Stesso discorso per la registrazione degli errori, dovrai attendere risposta dallo staff (comunque da php uguale o maggiore 7.0.0 sono pure io per file invece che su schermo per gli ambienti di sviluppo, ciò vuol dire pagina bianca nel caso di errore fatale).
    Buonasera anche a te.
    Pagamento o no, potrebbe consentire usare cartella temporanea gestita da php e cioè dalla tua root in poi /membri/fbgame/my_temp/ (l'altra soluzione o tramite move_upload_file() come seconda soluzione). Anche WordPress lo consente previo creazione di una costante php

    Codice PHP:
    $temp = ini_get( 'upload_tmp_dir' ); // Output /membri/.dummy/temp root is /membri/nickname
    if ( @is_dir( $temp . '/') && is_writable( $temp . '/' ) ) {
    var_dump( $temp . '/', is_readable( $temp . '/'), ini_get( 'open_basedir' ) );
    }
    Risultato atteso:
    Codice:
    string(20) "/membri/.dummy/temp/"
    bool(false)
    string(numero) "/membri/nickname/:/membri2/nickname/:/membri/.dummy/"
    è scrivibile ma non leggibile
    Scusa se rispondo con una domanda: ma "se" fosse possibile leggere al di fuori del proprio spazio utente (il proprio spazio utente che spesso coincide con la propria root) verso l'utente diverso lo considera un problema di sicurezza? Se leggibile verso darbula o io leggo verso fbgame "/membri/.dummy/"? https://www.php.net/manual/en/ini.co...i.open-basedir (per completezza la direttiva open-basedir).
    open-basedir PHP si rifiuterà di accedervi, le sessioni HTTP da un COOKIE creano il file che accede con linguaggio C++ (il codice sorgente di php).. Il perché il team di php non lo consente per PHAR non lo so.
    Ultima modifica di darbula : 04-12-2022 alle ore 01.40.22

  5. #5
    fbgame non è connesso Neofita
    Data registrazione
    24-03-2010
    Messaggi
    26

    Exclamation

    Le ho provate tutte, tanto che mi si era rovinato il forum e ho dovuto ripristinarlo. La situazione è immutata e pare sia proprio un problema di configurazione del php8 da parte dell'hosting. Ho parlato molto con quelli del supporto invision e mi hanno fatto creare una costante per poter cambiare la directory temporanea, ma non è cambiato nulla.
    Codice HTML:
    define( 'TEMP_DIRECTORY', '/membri/fbgame/temp/' );
    Successivamente abbiamo cercato di far prendere i permessi alle cartelle inserendo una costante con riferimento ai file e cartelle del sistema, ma sempre con nessun risultato. Un altro utente ha chiesto delucidazioni in merito e avendo il mio stesso identico problema. Non posso mettere l'indirizzo per visualizzare la discussione essendo visibile solo ai possessori di una licenza, ma vi metto lo screen.

    Qui espone il problema che è uguale al mio



    Qui la risposta dello staff




    Spero che qualcuno possa sistemare questa cosa...
    Buona serata

  6. #6
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Avete provato in questo modo from /membri/.dummy/temp/nomefile.tar to /membri/fgame/temp/nomefile.tar tramite la funzione https://www.php.net/manual/en/functi...oaded-file.php
    Come detto in precedenza non puoi cambiare i permessi di /membri/.dummy/temp sebbene con open-basedir PHP si rifiuterà di accedervi non è garantito ma è l'ultima forma di sicurezza per non essere direttamente leggibile da php.

    Penso che qui è la verifica del mode_t , mi dispiace posso aiutare solo con supposizioni non conosco quali permessi sono impostati in /membri/.dummy/temp (suppongo che abbia i permessi di lettura per il webserver ma non per php).
    Mentre qui puoi scegliere per chiedere spiegazioni di come funziona php (i permessi di quella cartella solo il tuo hosting, lì è un luogo per chiedere altro) e nel tuo caso
    Codice:
    CWD_API int virtual_chmod(const char *filename, mode_t mode);
    #ifdef VIRTUAL_DIR
    #define VCWD_CHMOD(path, mode) virtual_chmod(path, mode)
    che è il codice del mode_t proposto sopra
    Codice:
    mode = (mode_t) entry->flags & PHAR_ENT_PERM_MASK;
    if (FAILURE == VCWD_CHMOD(fullpath, mode))
    Ultima modifica di darbula : 05-12-2022 alle ore 22.43.14

  7. #7
    fbgame non è connesso Neofita
    Data registrazione
    24-03-2010
    Messaggi
    26

    Predefinito

    Ho sbagliato scusate per il secondo messaggio. Questo lo annullo.
    Ultima modifica di fbgame : 05-12-2022 alle ore 22.03.52

  8. #8
    fbgame non è connesso Neofita
    Data registrazione
    24-03-2010
    Messaggi
    26

    Predefinito

    Posso agire solo tramite richiami della costante e ho provato di tutto. C'è un problema con il php8 in questa cartella temp, anche perchè con il 7 tutto funzionava benissimo. Purtroppo non posso più tornare indietro perchè il php8 ora è il minimo richiesto da software e avrei solo errori.
    Non c'è qualcuno dello staff che possa darci una risposta più esauriente su questo fantomatico errore di ritorno del php8?
    Credo sia questa parte che da come dice è la directory principale per i file temporanei, infatti non ho file fisici se non dopo essere stati estratti nella cartella applications.
    https://www.php.net/manual/en/functi...t-temp-dir.php

  9. #9
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    No in realtà il codice tra tag code (che non so se è la strada giusta per il debug dei tecnici altervista) è relativo alla classe PharData::extracTo
    Certo presto otterrai chiarimenti dallo staff altervista e forse richiede l'intervento dei tecnici.
    Da molti anni che sono qui la cartella temporanea è al di fuori della propria root non credo sia correlato strettamente a questo problema ma al cambiamento tra php 7.3.2 al 8.0.1 relativo a PharData.
    Ultima modifica di darbula : 05-12-2022 alle ore 22.31.12

  10. #10
    fbgame non è connesso Neofita
    Data registrazione
    24-03-2010
    Messaggi
    26

    Predefinito

    La penso come te sul fatto che possa essere più un problema legato al PharData che a tutto il resto, proprio in ragione del fatto che prima funzionava tutto. Speriamo si possa risolvere in qualche modo...
    Ringraziandoti ancora per il sostegno che mi hai dato, rimango in attesa di risposta da parte dello staff.
    Buona serata

  11. #11
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Ciao e buona Immacolata a tutti
    Effettivamente PharData::extractTo "throw" (lancia) PharException (estende la classe Exception), in php significa inserisci il codice tra try poi catturi con il catch e php non si arresta.
    Ecco il codice per riprodurre il problema e ovviamente i percorsi sono per il mio server.
    Codice PHP:
    <?php
    error_reporting
    (PHP_INT_MAX);

    var_dump(decoct(umask()));

    $sFile = tempnam('/membri/.dummy/temp', 'test');
    var_dump(decoct(stat($sFile)['mode']));
    try {
    $phar = new \PharData('/membri/.dummy/temp/test.tar', 0, NULL, \Phar::TAR);
    } catch (
    UnexpectedValueException $e) {
    die(
    'Could not open my.tar');
    } catch (
    BadMethodCallException $e) {
    echo
    'technically, this cannot happen';
    }
    if(empty(
    $phar)) {
    echo
    '$phar undefined';
    } else {
    $phar->addFile($sFile, 'test-file-phar');
    unlink($sFile);
    try {
    $phar->extractTo('/membri/darbula/tm3p', NULL, true);
    } catch(
    PharException $e) {
    echo
    'può essere un falso positivo';
    }

    var_dump("\r\n" . decoct(stat('/membri/.dummy/temp/test.tar')['mode']));
    }

    ?>
    Tuttavia può essere un falso positivo non indica che non funziona, poiché il file test-file-phar è presente nella cartella di destinazione.
    Penso che inizialmente erano Warnings e solo dopo sono stati promossi in eccezioni (dico che il risultato atteso è uguale per ogni versione di php)

  12. #12
    fbgame non è connesso Neofita
    Data registrazione
    24-03-2010
    Messaggi
    26

    Predefinito

    Buongiorno! Non sono a questo livello di conoscenza, sei bravissimo nel ricostruirti un codice. Mi sono dimenticato di metterti il codice che mi avevi chiesto presente in questo file
    /membri/fbgame/applications/core/modules/admin/marketplace/marketplace.php dove alla riga 941 si trova questo codice
    Il problema nasce tutto da quel checkChmod. Pare controllare i permessi della cartella temp e ricevendo un negativo di ritorno mi blocca tutto rendendo non accessibile il negozio dal quale dovrei prelevare o aggiornare le App in mio possesso.
    Non mi è possibile provare in locale perchè agli accessi da localhost il negozio non interagisce
    Buona giornata

  13. #13
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Ciao @fbgame troppo buono, sono un dilettante che programma/ricerca bug come seconda passione la prima è i numeri.
    Se fosse un codice costante e nonostante php dice: setting file permissions failed ma crea i file con il valore dei permessi predefiniti (altervista 664, invece del 600 che normalmente è per i nuovi file). Ti direi metti una toppa "try {" una riga prima del metodo extractTo e "} catch(PharException $e) {
    //echo 'può essere un falso positivo';
    }" una riga dopo extractTo poiché il problema inizia da lì (o almeno il sorgente php si aspetta un codice diverso).
    A livello teorico se parli con il supporto di invision che cosa succede se eventualmente il tuo php non estrae tutti i file contenuti nel tuo archivio tar? Intendo è irrepalibile che si sistemerà solo con un backup precedente (integro) o oppure il problema è limitato alla reinstallazione di applicazioni?
    Se solo limitato puoi creare codice con la toppa e fai anche altro o ancora utilizzi il move_uploaded_file($from, $to);

  14. #14
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,166

    Predefinito

    Il comportamento di extractTo è identico sia cn PHP7 sia cn PHP8; escludo quindi un problema dato dalla versione di PHP.

    Anche io consiglio di inserire un try{}catch nel codice: verrà sollevata un'eccezione che però non dovrebbe compromettere l'esecuzione dello
    script.

    Ciao!

  15. #15
    fbgame non è connesso Neofita
    Data registrazione
    24-03-2010
    Messaggi
    26

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Il comportamento di extractTo è identico sia cn PHP7 sia cn PHP8; escludo quindi un problema dato dalla versione di PHP.

    Anche io consiglio di inserire un try{}catch nel codice: verrà sollevata un'eccezione che però non dovrebbe compromettere l'esecuzione dello
    script.

    Ciao!
    Buongiorno!
    Mi sono preso un pò di tempo per effettuare un pò di prove. Tramite il file constant.php ho potuto cambiare la cartella temporanea, infatti pur ricevendo lo stesso errore, nello stesso è presente il nuovo percorso. In poche parole ho creato una cartella dal nome estrazione e l'errore indica come problema di permessi il nuovo percorso. Ho scoperto invece, che in locale tutto funziona come dovrebbe. Non ho provato con una installazione pulita dello script, ma ho scaricato l'intero sito online dove il problema si è presentato. A questo punto non so che dire, se non che proverò ad aspettare qualche nuovo aggiornamento con la speranza che il problema possa svanire.
    Edit: Mi sono dimenticato di dire che online comunque crea nella cartella applications la cartella dell'app ed il file Application.php,
    Approfitto per fare gli Auguri nel caso in cui non riesca a collegarmi prima delle feste.
    Ultima modifica di fbgame : 19-12-2022 alle ore 14.04.07

  16. #16
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Ciao @fgame grazie altrettanto Auguri di buone feste anche a te.
    Scusa anche se definisci una costante i file temporanei permangono in una posizione /membri/.dummy/temp e quindi dovrai effettuare la sostituzione move_uploaded_file($from, to . 'nomefile.estensione');
    e ovviamente to in questo esempio pensa sia inizializzata e creata (prima di move_uploaded_file) con define('to', '/membri/fgame/temp'); e che già esista la cartella temp a tale percorso.
    La stringa 'nomefile.estensione' tra apici va sostituita con il nome e estensione di quel file.
    Ultima modifica di darbula : 19-12-2022 alle ore 14.37.14

  17. #17
    fbgame non è connesso Neofita
    Data registrazione
    24-03-2010
    Messaggi
    26

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Ciao @fgame grazie altrettanto Auguri di buone feste anche a te.
    Scusa anche se definisci una costante i file temporanei permangono in una posizione /membri/.dummy/temp e quindi dovrai effettuare la sostituzione move_uploaded_file($from, to . 'nomefile.estensione');
    e ovviamente to in questo esempio pensa sia inizializzata e creata (prima di move_uploaded_file) con define('to', '/membri/fgame/temp'); e che già esista la cartella temp a tale percorso.
    La stringa 'nomefile.estensione' tra apici va sostituita con il nome e estensione di quel file.
    Il punto è che non è un solo file che deve estrarre, ma una serie di cartelle e file che andranno a modificare più sezioni del forum. Non sono molto pratico, ne credo di essere in grado di affrontare un certo tipo di modifiche. Al momento ho trovato un modo per arrangiare il tutto in un modo che mi permette di attendere eventuali sviluppi. Il problema di base c'è e bisogna capire se effettivamente è colpa del php8 o dello script che in locale però funziona bene e mi confonde.

  18. #18
    fbgame non è connesso Neofita
    Data registrazione
    24-03-2010
    Messaggi
    26

    Predefinito

    Buonanotte, visto l'orario ormai..
    Chiedo gentilmente se è possibile far controllare i permessi proprietari della cartella fbgame o altre che ne impediscono il completamento dell'estrazione dei file. Ci sto impazzendo e comincio ad avere necessità di poter installare applicazioni che non hanno il solo valore d'utilizzo, ma anche economico. Ho riproposto il problema all'invision e giustamente mi hanno risposto di nuovo che se l'applicazione viene prelevata dal loro negozio ed inizia l'estrazione, ma viene bloccata, non è un problema di software, ma di server. Non posso nemmeno fare modifiche, ovvero, a mio rischio e pericolo perchè se creo un problema che causa un errore al sistema non mi forniscono supporto. In locale funziona tutto bene ed è questo che mi lascia perplesso. Scusatemi se posso sembrare un pò seccato, ma sembra che sto giocando a ping pong perchè voi mi dite che non è un problema vostro e di la che non è un problema loro, mentre io son qui fermo a perder tempo perchè non so chi abbia ragione e ne tanto meno come risolvere il problema.

    Questa è la risposta di Invision

    Ultima modifica di fbgame : 09-01-2023 alle ore 05.11.48

  19. #19
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,166

    Predefinito

    A quale path hai inserito il percorso in "constant.php"? Riesci a scriverci/salvarci file?

    Puoi controllare i permessi della cartella con FTP (filezilla).

    Ciao!

  20. #20
    fbgame non è connesso Neofita
    Data registrazione
    24-03-2010
    Messaggi
    26

    Predefinito

    Ciao carissimo. Nel costant.php avevo messo un percorso per provare a cambiare la cartella temp, ma pur funzionando lo spostamento il problema persisteva così ho reimpostato tutto come prima.
    Codice:
    \define( 'TEMP_DIRECTORY', '/membri/fbgame/temp/' );
    Con FileZilla le cartelle, almeno apparentemente, sono state ipostate a 0777 dove richiesto mentre tutte le altre sono 0775 ed i file 0664/0666 sul confing. Per l'esattezza le cartelle che il forum vuole a 0777 sono: applications, datastore, plugin, upload e upload/log, cosa che a me risulta configurato correttamente perchè a parte l'estrazione delle applicazioni il resto del forum funziona bene senza segnalare errori.

    Questo è il contenuto del costant.php
    Codice PHP:
    <?php

    questo è per il cambio del nome predefinito della directory amministrativa
    \define( 'CP_DIRECTORY', '*********' );

    costante per cambio directory temporanea
    /*\define( 'TEMP_DIRECTORY', '/membri/fbgame/temp/' );*/

    questo è generato in automatico dal forum per la tipologia di gestione della cache che in questo momento mando al database
    \define( 'REDIS_ENABLED', false );
    \
    define( 'STORE_METHOD', 'Database' );
    \
    define( 'STORE_CONFIG', '[]' );
    \
    define( 'CACHE_METHOD', 'None' );
    \
    define( 'CACHE_CONFIG', '[]' );
    \
    define( 'SUITE_UNIQUE_KEY', '**********' );

    questo è per poter accedere in amministrazione in caso di problemi seri
    /*\define( 'RECOVERY_MODE', 'TRUE' );*/
    Ultima modifica di fbgame : 10-01-2023 alle ore 00.03.20

  21. #21
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    I file creati da php con estensione tar (PHP è scritto tramite codice C++) usa 0600 come permessi predefiniti come anche per i file temporanei mentre per i file temporanei altervista è più aperto (attualmente 0664).
    Può darsi il problema è il file.tar verso il percorso di destinazione
    Ultima modifica di darbula : 11-01-2023 alle ore 02.13.21

  22. #22
    fbgame non è connesso Neofita
    Data registrazione
    24-03-2010
    Messaggi
    26

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    I file creati da php con estensione tar (PHP è scritto tramite codice C++) usa 0600 come permessi predefiniti come anche per i file temporanei mentre per i file temporanei altervista è più aperto (attualmente 0664).
    Può darsi il problema è il file.tar verso il percorso di destinazione
    Ciao Darbula...
    Ho appena riprovato visto che ho aggiornato il forum all'ultima versione appena usita e con la speranza nel cuore ecco che invece l'errore si ripete.
    screen 1 apertura sezione registro

    screen 2 lettura dell'errore

    screen 3 dettaglio errore di sistema come conseguenza al non riuscire ad eseguire l'estrazione

    Posso fornire anche i dettagli di ogni singolo file se occorre per capire.
    Ultima modifica di fbgame : 11-01-2023 alle ore 02.40.00

  23. #23
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Purtroppo non ancora riesco a capire il perché non funziona, il mio test php che denota il bug
    Codice PHP:
    <?php
    ob_end_clean
    ();
    $false = 1;
    if(
    $false) {
    error_reporting(PHP_INT_MAX);

    try {
    $phar = new \PharData('/membri/darbula/tm3p/test.tar', 0, NULL, \Phar::TAR);
    } catch (
    UnexpectedValueException $e) {
    $phar = NULL;
    unset(
    $phar);
    die(
    'Could not open my.tar');
    } catch (
    BadMethodCallException $e) {
    $phar = NULL;
    unset(
    $phar);
    echo
    'technically, this cannot happen';
    }
    if(empty(
    $phar)) {
    echo
    '$phar undefined';
    } else {
    $sFile = tempnam('/membri/darbula/tm3p', 'test');
    $phar->addFile($sFile, 'test-file-phar');
    unlink($sFile);
    //try {
    $phar->extractTo('/membri/darbula/tm3p', NULL, true);
    //} catch(PharException $e) {
    // echo 'può essere un falso positivo';
    //}

    $var = stat('/membri/darbula/tm3p/test.tar');
    }
    unlink('/membri/darbula/tm3p/test.tar');
    clearstatcache();
    var_dump(decoct($var['mode']));
    }

    ?>
    Qui in altervista anche se i file e tutte le directory sono su 0777 (inclusa la creazione della cartella tm3p e permessi 0777) hanno il file test.tar creato manualmente tramite php corrotto poiché in precedenza genera setting file permissions failed.
    EDIT Suppongo occorra anche scrittura su other poiché la root /membri/darbula è 40775 ma non mi spiego il perché di questo contesto con il C++ per la classe PharData.
    Ultima modifica di darbula : 11-01-2023 alle ore 14.48.27

  24. #24
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,166

    Predefinito

    Normalmente, i permessi su altervista sono 0775 per le cartelle e 0664 per i file.

    Ma hai provato a mettere un try-catch() all'extract che avevi mostrato qui? Mi sono perso questa prova.

    Ciao!

  25. #25
    fbgame non è connesso Neofita
    Data registrazione
    24-03-2010
    Messaggi
    26

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Normalmente, i permessi su altervista sono 0775 per le cartelle e 0664 per i file.

    Ma hai provato a mettere un try-catch() all'extract che avevi mostrato qui? Mi sono perso questa prova.

    Ciao!
    Allora presumo che il problema sia nei permessi della cartella fbgame perchè se è 775 per poterci fare arrivare il file, che temporaneamente apparirebbe nella cartella temp, sarebbero necessari i permessi di root. Spiegherebbe il perchè viene bloccato il tutto. Non so se la politica di altervista permette questo settaggio, ma per me sarebbe la soluzione al problema. Per provare il ponte cui fai riferimento, e creato da Darbula come esempio nel post prima se non erro, non saprei dove mettere mani e l'ivision non fornisce supporto per queste cose non essendo un problema del loro software. Che posso fare?
    Ciao alemoppo
    Ultima modifica di fbgame : 12-01-2023 alle ore 00.56.09

  26. #26
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,166

    Predefinito

    Citazione Originalmente inviato da fbgame Visualizza messaggio
    Per provare il ponte cui fai riferimento, e creato da Darbula come esempio nel post prima se non erro, non saprei dove mettere mani e l'ivision non fornisce supporto per queste cose non essendo un problema del loro software.
    Come indicato appunto da Darbula:
    Citazione Originalmente inviato da darbula Visualizza messaggio
    Ti direi metti una toppa "try {" una riga prima del metodo extractTo e "} catch(PharException $e) {
    //echo 'può essere un falso positivo';
    }" una riga dopo extractTo poiché il problema inizia da lì (o almeno il sorgente php si aspetta un codice diverso).

    Quindi, puoi aprire il file con un editor di testo (o anche modificarlo direttamente dal pannello di controllo), quindi prendendo come riferimento la riga 941 del file /membri/fbgame/applications/core/modules/admin/marketplace/marketplace.php

    Codice:
    else  #(riga già presente)
    {     #(riga già presente)
      try {
      /*Extract*/
      $application->extractTo(.... <resto della riga>
      } catch(PharException $e) {
      }
      \IPS\core\modules\.... #(riga già presente)
    Fammi sapere.

    Ciao!

  27. #27
    fbgame non è connesso Neofita
    Data registrazione
    24-03-2010
    Messaggi
    26

    Predefinito

    Ho provato, ma è uscito un disastro. Sperando di aver inserito la parte di codice correttamente ovviamente.
    Ho impostato il codice in questo modo
    Codice PHP:
    else
    {
    try {
    /* Extract */
    $application->extractTo( \IPS\ROOT_PATH . "/applications/" . $appDirectory, NULL, TRUE );
    } catch(
    PharException $e) {
    }
    \
    IPS\core\modules\admin\applications\applications::_checkChmod( \IPS\ROOT_PATH . '/applications/' . $appDirectory );
    \
    IPS\IPS::resyncIPSCloud( 'Extracted marketplace application in ACP' );
    }
    Il primo problema è l'invalidazione del supporto. In caso di problemi loro accedono in amministrazione e come vedono questo avviso escono immediatamente.


    Mentre l'altro problema è sempre quello del blocco con la differenza che vede la stessa riga 941 come 942 per il try aggiunto.

  28. #28
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,166

    Predefinito

    E se ripristini il codice originale, il primo problema persiste?

    Ciao!
    Ultima modifica di alemoppo : 12-01-2023 alle ore 22.19.53

  29. #29
    fbgame non è connesso Neofita
    Data registrazione
    24-03-2010
    Messaggi
    26

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    E se ripristini il codice originale, il primo problema persiste?

    Ciao!
    No no ho rimesso il backup del file che avevo fatto prima di modificarlo. Siamo tornati alla posizione di partenza purtroppo.
    Ultima modifica di fbgame : 12-01-2023 alle ore 22.36.03

  30. #30
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Il metodo extractTo si ferma qui che tralasciando parte del codice recupera l'errore da qui ma stai anche utilizzando la costante
    Codice PHP:
    \define( 'TEMP_DIRECTORY', '/membri/fbgame/temp' ); // commento non interpretato da php e esempio senza slash finale
    cartella /temp creata precedentemente e magari tramite ftp imposti 777. ?
    Non saprei se il codice C++ della funzione VCWD_CHMOD può recuperare i permessi di una cartella open_basedir "/membri.dummy/temp/" perché il php nativo non può (che almeno io sappia). EDIT: eppure il sito 3v4l.org non da errore per la cartella temporanea con open_basedir e quindi VCWD_CHMOD funziona.
    @alemoppo è una richiesta troppo esosa se i tecnici dal loro ambiente di test cambiano la root /membri/nickname con permessi 777? Giustamente il test è from /membri/nickname/test.tar e to /membri/nickname (destinazione del metodo extractTo). Come nel codice proposto qui
    Però a differenza dell'utente fbgame il file .tar originale proviene da un download prelevato esternamente (quindi non è corrotto), che poi corrotto o meno i file e cartelle sono comunque creati (con i permessi predefiniti ma siccome l'errore non viene catturato php si arresta e di conseguenza è qui che manca il supporto di invision).
    Ultima modifica di darbula : 13-01-2023 alle ore 00.10.12

Pagina 1 di 2 12 UltimoUltimo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •