Ergebnis 1 bis 29 von 29

Thema: Inhaltselement: Downloads

  1. #1
    Contao-Nutzer
    Registriert seit
    12.05.2011.
    Beiträge
    86

    Standard Inhaltselement: Downloads

    Hallo Zusammen,

    einem Mitglied werden über das Inhaltselement "Downloads" seine persöhnlichen Dateien aus dem Mitgliedsordner angezeigt.
    Ist es irgendwie mögich alle Dateien gleichzeitig herunterzuladen? Z.B. automatisiert als Archiv?

    Die Dateien extra auf dem Rechner zu zippen und neu hochzuladen ist sehr umständlich.

    Über eine Antwort würde ich mich freuen.

    Viele Grüße
    Chacky

  2. #2
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Ja, schau mal hier: https://github.com/menatwork-ia/zipstream/

    Aber das Ganze ist mit Vorsicht zu benutzen, da die Dateien on-the-fly gepackt werden. Hier muss die PHP-Laufzeit und das Memory-Limit bei deinem Webserver mitmachen. Wenn Fragen zur Anwendung auftauchen, melde dich einfach, dann poste ich morgen nen Snippet auf nem Projekt wo wir das eingebunden haben.

  3. #3
    Contao-Nutzer
    Registriert seit
    12.05.2011.
    Beiträge
    86

    Standard

    Hallo Thraile,

    danke für die Antwort =)

    ich schaue mir das mal an und melde mich dann wieder.

  4. #4
    Contao-Nutzer
    Registriert seit
    12.05.2011.
    Beiträge
    86

    Standard

    Hallo,

    leider bekomme ich es nicht hin =)
    Könntest du mir dein Snippet posten?

    Vielen Dank!

  5. #5
    Contao-Fan Avatar von WilhelmTell
    Registriert seit
    12.12.2014.
    Beiträge
    316

    Standard

    Ich hab' zipstream auch mal von hand installiert, aber dann seh' ich nicht, wie's weitergeht.
    Weder in Artikel noch unter Module.
    Dank

  6. #6
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Das ist ja auch kein Modul oder ähnliches. Ne reine Klasse für Entwickler, also eher eine Lib.
    Hier muss also etwas programmiert werden um das zu nutzen. Entweder ein eigenes Modul oder einige Zeilen in einem Template reinschreiben was man dann lädt.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  7. #7
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Habe jetzt spontan nur ein Snippet aus einer 2.11er Installation gefunden, da lief die Extensionnich unter dem Namen "zipdown". Das Snippet kommt aus einem News-Template.

    PHP-Code:
    <?php $this->import('zipdown'); ?>

    <?php if ($this->enclosure): ?>
    <div class="enclosure">
    <?php $downloadlinks = array(); foreach ($this->enclosure as $enclosure): ?>
    <p><a href="<?php echo $enclosure['href']; ?>" title="<?php echo $enclosure['title']; ?>"><img src="{{env::path}}tl_files/standard/layout/images/icon-<?php echo substr($enclosure['enclosure'], -3); ?>.gif" alt="<?php echo $enclosure['title']; ?>" /></a></p>
    <?php $downloadlinks[] = $enclosure['enclosure']; endforeach; ?>
    <p><?php echo $this->zipdown->zipdownForm($this->id$downloadlinks'<img src="{{env::path}}tl_files/standard/layout/images/icon-zip.gif" alt="" />'); ?></p>
    </div>
    <?php endif; ?>
    </div>
    In einer 3.x müsste das ganze dann ca. so aussehen (ungetestet)
    PHP-Code:
    <?php //Zipstream Objekt erzeugen ?>
    <?php $objzipStream 
    ZipStream::getInstance(); ?>

    <?php if ($this->enclosure): ?>
    <div class="enclosure">
    <?php //Array für Anhänge initialisieren ?>
    <?php $downloadlinks 
    = array();?>

    <?php //Mit einer foreach-Schleife alle Anhänge durchlaufen... ?>
    <?php  
    foreach ($this->enclosure as $enclosure): ?>
    <?php 
    //und den array hinzufügen. Die Anhänge könne ntaürlich auch wie im Besipiel oben noch ausgegeben werden :) ?>
    <?php $downloadlinks
    [] = $enclosure['enclosure']; endforeach; ?>
    <?php 
    //Link zum ZipFile erzeugen: ?>
    <p><?php echo objzipStream ->zipStreamForm($this->id$downloadlinks'Dateien als Zip herunterladen'); ?></p>
    </div>
    <?php endif; ?>
    Geändert von Thraile (16.03.2015 um 10:07 Uhr)

  8. #8
    Contao-Nutzer
    Registriert seit
    12.05.2011.
    Beiträge
    86

    Standard

    Hallo Thraile,

    danke für deine Mühe, doch leider hab ich es immer noch nicht hinbekommen :/
    Zwischenzeitlich habe ich nach einer anderen Lösung gesucht.

    Aus folgenden Code den ich gefunden habe, habe ich ein Modul umgesetzt. Funktioniert eig. Super. Doch Contao zeigt mir an:"Datei nicht gefunden", sobald die zu packenden Dateien größer sind. Wenn ich den Script frei auf den Server (ohne Contao) lege funktioniert es....


    PHP-Code:


    <?php
    $this
    ->import('FrontendUser','User');
    $username $this->User->username;  

        
    $error "";        //error holder
        
    if(isset($_GET['createpdf'])){
            
    $post $_GET;        
            
    $file_folder "files/Benutzer/$username/";    // folder to load files
            
    if(extension_loaded('zip')){    // Checking ZIP extension is available
                
    if(isset($post['files']) and count($post['files']) > 0){    // Checking files are selected
                    
    $zip = new ZipArchive();            // Load zip library    
                    
    $zip_name time().".zip";            // Zip name
                    
    if($zip->open($zip_nameZIPARCHIVE::CREATE)!==TRUE){        // Opening zip file to load files
                        
    $error .=  "* Sorry ZIP creation failed at this time<br/>";
                    }
                    foreach(
    $post['files'] as $file){                
                        
    $zip->addFile($file_folder.$file);            // Adding files into zip
                    
    }
                    
    $zip->close();
                    if(
    file_exists($zip_name)){
                        
    // push to download the zip
                        
    header('Content-type: application/zip');
                        
    header('Content-Disposition: attachment; filename="'.$zip_name.'"');
                        
    readfile($zip_name);
                        
    // remove zip file is exists in temp path
                        
    unlink($zip_name);
                    }
                    
                }
            
    ?>


    HTML-Code:
    <form name="zips" method="$_GET">
    <table>
      <tr>
        <td width="33" align="center">*</td>
        <td width="117" align="center">File Type</td>
        <td width="382">File Name</td>
      </tr>
    
    
    <tr>
    <td align="center"><input type="checkbox" name="files[]" value="1.jpg" /></td>
    <td>1.jpg</td>
    </tr>
    
    <tr>
    <td align="center"><input type="checkbox" name="files[]" value="2.jpg" /></td>
    <td>2.jpg</td>
    </tr>
    
    ..........

  9. #9
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Bitte nicht .

    Was du da machst ist böse. Auf $_GET bitte NIE direkt zugreifen, sondern immer die Parameter über die Klasse \Input::get('key') auslesen. Damit ist der Zugriff sicher(er) und verhindert, dass dir manipulierte Dinger untergejubelt werden. Auch werden hier die Dateien einfach so ins ZipFile übernommen, ohne dass diese noch einmal überprüft werden. Mit etwas Spielerei könnte man wahrscheinlich aus dem Contao-Verzeichnis ausbrechen und andere Dateien herunterladen (soweit die Rechte das zulassen). Auf jeden fall kann man Dateien von anderen Benutzern herunterladen...

    Ich habe mal das Template für die Downloads (ce_downloads.html5) angepasst und Zipstream reingefrickelt. Frag mich nicht warum die Dateinamen mit Pfad nicht 1:1 ins Template übergeben werden, aer irgendwie sind die bei mir nicht da. Daher das etwas unschöne Konstrukt mit dem str_replace, hier könnte man sicherlich eine "schönere" Lösung machen, aber so geht es auch

    PHP-Code:
    <div class="<?php echo $this->class?> block"<?php echo $this->cssID?><?php if ($this->style): ?> style="<?php echo $this->style?>"<?php endif; ?>>

      <?php if ($this->headline): ?>
        <<?php echo $this->hl?>><?php echo $this->headline?></<?php echo $this->hl?>>
      <?php endif; ?>

      <?php echo $this->v2warning?>

      <ul>
        <?php //get the ZipStreamObject ?>
        <?php $objzipStream ZipStream\ZipStream::getInstance();?>
        <?php //init the array for the files ?>
        <?php $downloadlinks = array();?>
        <?php foreach ($this->files as $file): ?>
        <?php //add the files - for some strange reasons the original path is not passed to the template, so rebuild it. Not pretty but works :) ?>
        <?php $downloadlinks[] = str_replace(TL_ROOT '/'''$file['path']) . '/' $file['name']; ?>
          <li><img src="<?php echo $file['icon']; ?>" width="18" height="18" alt="" class="mime_icon"> <a href="<?php echo $file['href']; ?>" title="<?php echo $file['title']; ?>"><?php echo $file['link']; ?> <span class="size">(<?php echo $file['filesize']; ?>)</span></a></li>
        <?php endforeach; ?>
      </ul>
    <?php //echo the download link ?>
    <p><?php echo $objzipStream->zipStreamForm($this->id$downloadlinks'Dateien als Zip herunterladen'); ?></p>
    </div>

  10. #10
    Contao-Fan Avatar von WilhelmTell
    Registriert seit
    12.12.2014.
    Beiträge
    316

    Standard

    Code:
    Downloads
        Fatal error: Class 'ZipStream\ZipStream' not found in /home/users4/k/klaus/www/galerie/templates/galerie/ce_downloads.html5 on line 11
    Hab' ich da was falsch gemacht ?

  11. #11
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Hmm, ich habe es via Composer installiert? Hast du die Extension manuell installiert?

    Gesendet von meinem Xperia Arc S mit Tapatalk

  12. #12
    Contao-Nutzer
    Registriert seit
    28.03.2011.
    Beiträge
    44

    Standard

    Zitat Zitat von Thraile Beitrag anzeigen

    Ich habe mal das Template für die Downloads (ce_downloads.html5) angepasst und Zipstream reingefrickelt.
    Hallo und danke dafür.
    Bin zufällig über den Beitrag gestolpert und konnte Deinen Code gerade super gebrauchen (hat auf Anhieb geklappt).

    Gruß
    Inge

    Nachtrag: Habe die Extension manuell installiert.

  13. #13
    Contao-Fan Avatar von WilhelmTell
    Registriert seit
    12.12.2014.
    Beiträge
    316

    Standard

    Zitat Zitat von Thraile Beitrag anzeigen
    Hast du die Extension manuell installiert?
    Hab' keine Extension installiert. Welche denn ?
    Hab' nur das Template geändert.
    Richtig ! Hatte zipstream kopiert. Und jetzt das Template geändert.

    EDIT: Jetzt hab' ich's nochmal versucht (vorher cache geleert) und jetzt geht's plötzlich. Wunnebar !
    SNAG-01766.gif
    Geändert von WilhelmTell (18.03.2015 um 23:57 Uhr)

  14. #14
    Contao-Nutzer
    Registriert seit
    12.05.2011.
    Beiträge
    86

    Standard

    Hallo,

    noch mal danke. Es sieht schon ganz gut aus, aber leider funktioniert es immer noch nicht ganz bei mir.
    Es wird zwar ein Archiv heruntergeladen, dieses ist jedoch leer...?

    Der Pfad zu den Dateien stimmt auf jeden Fall.

  15. #15
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Was steht in deinem Arrray mit den Dateien? Pack doch mal
    PHP-Code:
    <?php var_dump($downloadlinks);?>
    and Ende des Templates und schau was da ausgegeben wird. Eigentlich sollten da alle Dateien aufgelistet werden, beginnend mit "files/..."

  16. #16
    Contao-Nutzer
    Registriert seit
    12.05.2011.
    Beiträge
    86

    Standard

    Das funktioniert auch...

    Die Ausgabe sieht folgendermaßen bei 2 Bildern aus.
    PHP-Code:
     array(2) { [0]=> string(25"files/Benutzer/test/3.jpg" [1]=> string(34"files/Benutzer/test/bel520anth.jpg" 
    Im Anhang dazu auch ein Bild.

    screen.jpg

  17. #17
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Sieht eigentlich gut aus - und dein Archiv ist einfach leer? Wundert mich irgendwie, da wir das Ganze eigentlich nur mit dem Zipweiter von Contao packen und dann an den Browser schicken.
    Ich nehme an in den error.logs taucht auch keine Meldung auf, oder?

  18. #18
    Contao-Nutzer
    Registriert seit
    12.05.2011.
    Beiträge
    86

    Standard

    Siehe da ...
    folgendes zeigt der Error.log


    PHP-Code:
    [19-Mar-2015 21:03:08 GMT
    PHP Warningfwrite() expects parameter 1 to be resourceboolean given in /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/zipstream/ZipStream.php on line 212
    #0 [internal function]: __error(2, 'fwrite() expect...', '/is/htdocs/wp11...', 212, Array)
    #1 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/zipstream/ZipStream.php(212): fwrite(false, 'PK?????????ErF?...')
    #2 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/zipstream/ZipStream.php(111): ZipStream\ZipStream->outputZipArchive()
    #3 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/zipstream/ZipStream.php(132): ZipStream\ZipStream->zipDownload(Array, NULL)
    #4 /is/htdocs/wp11114207_MAYD3EDA7I/www/templates/ce_downloads.html5(23): ZipStream\ZipStream->zipStreamForm('19', Array, 'Dateien als Zip...')
    #5 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/library/Contao/Template.php(272): include('/is/htdocs/wp11...')
    #6 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/classes/FrontendTemplate.php(28): Contao\Template->parse()
    #7 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/elements/ContentElement.php(174): Contao\FrontendTemplate->parse()
    #8 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/elements/ContentDownloads.php(91): Contao\ContentElement->generate()
    #9 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/library/Contao/Controller.php(457): Contao\ContentDownloads->generate()
    #10 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/modules/ModuleArticle.php(187): Contao\Controller->getContentElement(Object(Contao\ContentModel), 'main')
    #11 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/modules/Module.php(139): Contao\ModuleArticle->compile()
    #12 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/modules/ModuleArticle.php(50): Contao\Module->generate()
    #13 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/library/Contao/Controller.php(393): Contao\ModuleArticle->generate(false)
    #14 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/library/Contao/Controller.php(255): Contao\Controller->getArticle(Object(Contao\ArticleModel), false, false, 'main')
    #15 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/pages/PageRegular.php(129): Contao\Controller->getFrontendModule('0', 'main')
    #16 /is/htdocs/wp11114207_MAYD3EDA7I/www/index.php(248): Contao\PageRegular->generate(Object(Contao\PageModel), true)
    #17 /is/htdocs/wp11114207_MAYD3EDA7I/www/index.php(431): Index->run()
    #18 {main}

    [19-Mar-2015 21:03:08 GMT
    PHP Warningrewind() expects parameter 1 to be resourceboolean given in /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/zipstream/ZipStream.php on line 213
    #0 [internal function]: __error(2, 'rewind() expect...', '/is/htdocs/wp11...', 213, Array)
    #1 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/zipstream/ZipStream.php(213): rewind(false)
    #2 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/zipstream/ZipStream.php(111): ZipStream\ZipStream->outputZipArchive()
    #3 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/zipstream/ZipStream.php(132): ZipStream\ZipStream->zipDownload(Array, NULL)
    #4 /is/htdocs/wp11114207_MAYD3EDA7I/www/templates/ce_downloads.html5(23): ZipStream\ZipStream->zipStreamForm('19', Array, 'Dateien als Zip...')
    #5 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/library/Contao/Template.php(272): include('/is/htdocs/wp11...')
    #6 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/classes/FrontendTemplate.php(28): Contao\Template->parse()
    #7 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/elements/ContentElement.php(174): Contao\FrontendTemplate->parse()
    #8 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/elements/ContentDownloads.php(91): Contao\ContentElement->generate()
    #9 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/library/Contao/Controller.php(457): Contao\ContentDownloads->generate()
    #10 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/modules/ModuleArticle.php(187): Contao\Controller->getContentElement(Object(Contao\ContentModel), 'main')
    #11 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/modules/Module.php(139): Contao\ModuleArticle->compile()
    #12 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/modules/ModuleArticle.php(50): Contao\Module->generate()
    #13 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/library/Contao/Controller.php(393): Contao\ModuleArticle->generate(false)
    #14 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/library/Contao/Controller.php(255): Contao\Controller->getArticle(Object(Contao\ArticleModel), false, false, 'main')
    #15 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/pages/PageRegular.php(129): Contao\Controller->getFrontendModule('0', 'main')
    #16 /is/htdocs/wp11114207_MAYD3EDA7I/www/index.php(248): Contao\PageRegular->generate(Object(Contao\PageModel), true)
    #17 /is/htdocs/wp11114207_MAYD3EDA7I/www/index.php(431): Index->run()
    #18 {main}

    [19-Mar-2015 21:03:08 GMT
    PHP Warningfpassthru() expects parameter 1 to be resourceboolean given in /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/zipstream/ZipStream.php on line 228
    #0 [internal function]: __error(2, 'fpassthru() exp...', '/is/htdocs/wp11...', 228, Array)
    #1 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/zipstream/ZipStream.php(228): fpassthru(false)
    #2 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/zipstream/ZipStream.php(111): ZipStream\ZipStream->outputZipArchive()
    #3 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/zipstream/ZipStream.php(132): ZipStream\ZipStream->zipDownload(Array, NULL)
    #4 /is/htdocs/wp11114207_MAYD3EDA7I/www/templates/ce_downloads.html5(23): ZipStream\ZipStream->zipStreamForm('19', Array, 'Dateien als Zip...')
    #5 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/library/Contao/Template.php(272): include('/is/htdocs/wp11...')
    #6 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/classes/FrontendTemplate.php(28): Contao\Template->parse()
    #7 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/elements/ContentElement.php(174): Contao\FrontendTemplate->parse()
    #8 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/elements/ContentDownloads.php(91): Contao\ContentElement->generate()
    #9 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/library/Contao/Controller.php(457): Contao\ContentDownloads->generate()
    #10 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/modules/ModuleArticle.php(187): Contao\Controller->getContentElement(Object(Contao\ContentModel), 'main')
    #11 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/modules/Module.php(139): Contao\ModuleArticle->compile()
    #12 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/modules/ModuleArticle.php(50): Contao\Module->generate()
    #13 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/library/Contao/Controller.php(393): Contao\ModuleArticle->generate(false)
    #14 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/library/Contao/Controller.php(255): Contao\Controller->getArticle(Object(Contao\ArticleModel), false, false, 'main')
    #15 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/pages/PageRegular.php(129): Contao\Controller->getFrontendModule('0', 'main')
    #16 /is/htdocs/wp11114207_MAYD3EDA7I/www/index.php(248): Contao\PageRegular->generate(Object(Contao\PageModel), true)
    #17 /is/htdocs/wp11114207_MAYD3EDA7I/www/index.php(431): Index->run()
    #18 {main}

    [19-Mar-2015 21:03:08 GMT
    PHP Warningfclose() expects parameter 1 to be resourceboolean given in /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/zipstream/ZipStream.php on line 231
    #0 [internal function]: __error(2, 'fclose() expect...', '/is/htdocs/wp11...', 231, Array)
    #1 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/zipstream/ZipStream.php(231): fclose(false)
    #2 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/zipstream/ZipStream.php(111): ZipStream\ZipStream->outputZipArchive()
    #3 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/zipstream/ZipStream.php(132): ZipStream\ZipStream->zipDownload(Array, NULL)
    #4 /is/htdocs/wp11114207_MAYD3EDA7I/www/templates/ce_downloads.html5(23): ZipStream\ZipStream->zipStreamForm('19', Array, 'Dateien als Zip...')
    #5 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/library/Contao/Template.php(272): include('/is/htdocs/wp11...')
    #6 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/classes/FrontendTemplate.php(28): Contao\Template->parse()
    #7 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/elements/ContentElement.php(174): Contao\FrontendTemplate->parse()
    #8 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/elements/ContentDownloads.php(91): Contao\ContentElement->generate()
    #9 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/library/Contao/Controller.php(457): Contao\ContentDownloads->generate()
    #10 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/modules/ModuleArticle.php(187): Contao\Controller->getContentElement(Object(Contao\ContentModel), 'main')
    #11 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/modules/Module.php(139): Contao\ModuleArticle->compile()
    #12 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/modules/ModuleArticle.php(50): Contao\Module->generate()
    #13 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/library/Contao/Controller.php(393): Contao\ModuleArticle->generate(false)
    #14 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/library/Contao/Controller.php(255): Contao\Controller->getArticle(Object(Contao\ArticleModel), false, false, 'main')
    #15 /is/htdocs/wp11114207_MAYD3EDA7I/www/system/modules/core/pages/PageRegular.php(129): Contao\Controller->getFrontendModule('0', 'main')
    #16 /is/htdocs/wp11114207_MAYD3EDA7I/www/index.php(248): Contao\PageRegular->generate(Object(Contao\PageModel), true)
    #17 /is/htdocs/wp11114207_MAYD3EDA7I/www/index.php(431): Index->run()
    #18 {main} 

    Sagt dir das irgendwas?

    Keine Schreib- Leserechte?
    Geändert von Chacky (19.03.2015 um 21:21 Uhr)

  19. #19
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Zitat Zitat von Chacky Beitrag anzeigen
    Sagt dir das irgendwas?

    Keine Schreib- Leserechte?
    Scheint fast so. Auf jeden Fall schlägt das Anlegen der temporären Datei fehl.

  20. #20
    Contao-Nutzer
    Registriert seit
    12.05.2011.
    Beiträge
    86

    Standard

    Ich verstehs nicht...

    ich hab das ganze jetzt einmal local auf Mamp laufen... hier funktioniert es natürlich ohne Probleme...

    Der Server ist von Hosteurope... Dateiberechtigungen habe ich jetzt über manuell in Filezilla gesetzt... funktioniert trotzdem nicht.
    Servereinstellungen (siehe Screenshot im Anhang) sollten eigentlich auch passen.


    Hat jemand noch eine Idee? :/
    Angehängte Grafiken Angehängte Grafiken

  21. #21
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.078
    Contao-Projekt unterstützen

    Support Contao

    Standard

    In welchem Verzeichnis soll denn die temporäre Datei angelegt werden? Und wie groß ist sie?

  22. #22
    Contao-Nutzer
    Registriert seit
    12.05.2011.
    Beiträge
    86

    Standard

    ZipStream.php nutzt folgenden Ordner:

    PHP-Code:
        /**
         * Path for the temp folder.
         */
        
    const TEMPORARY_FOLDER 'system/tmp'
    Es funktioniert mit keiner Dateigröße.

    --

    Habe jetzt mal eine Mail zum Support gesendet... mal gucken was dabei heraus kommt.
    Geändert von Chacky (20.03.2015 um 11:35 Uhr)

  23. #23
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Das mit dem Temporären Ordner stimmt nicht ganz. Bei dir tritt der Fehler in Zeile 211 auf, hier verschieben wir den Inhalt des Zip-Archivs noch einmal in eine andere Datei. Dieses neue Tempfile wird mit der PHP-Funktion tmpfile() erstellt, hier sorgt PHP selbsständig dafür, dass die Datei wieder gelöscht wird, wenn sie a) geschlossen oder b) das Skript beendet wird. Vor allen Fall b) kann man schlecht selbst abfangen . Im Prinzip bräuchten wir die Datei im ersten Step nicht im TEMPORARY_FOLDER erstellen, das ist noch eine Altlast...

    Die Schreibrechte fallen dir also im PHP-eigenem Temp-Ordner auf die Füße, wenn die tmpfile() Funtkion aufgerufen wird. mit
    PHP-Code:
    <?php echo sys_get_temp_dir();?>
    solttest du den Ordner ausgegeben bekommen, der für solche Aktionen verwendet wird. Hier passen dann wohl die Rechte nicht. Bin gespannt, was dein Support dazu so meint

  24. #24
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.078
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ja, ZipStream nutzt diesen Folder, aber tmpfile() wohl eher nicht. Das müsste denke ich irgendwo in der php.ini festgelegt sein. Es gab schon mal einen Fall, wo jemand im temporären Verzeichnis nicht schreiben durfte und sich den Pfad zum temporären Verzeichnis dann passend umgebogen hat. Ab PHP 5.5.0 kann man das temporäre Verzeichnis in der php.ini setzen (sys_temp_dir).

  25. #25
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.078
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Edit: Das hat sich jetzt überschnitten ... zu langsam mal wieder.

  26. #26
    Contao-Nutzer
    Registriert seit
    12.05.2011.
    Beiträge
    86

    Standard

    hmm.. okay...

    auf dem Server läuft jedoch PHP 5.4. Als Auswahl steht sonst nur 5.3 zur Auswahl.

    Mit <?php echo sys_get_temp_dir();?> wird der ordner "/tmp" ausgegeben. Ich konnte jedoch in den EInstellungen dazu folgendes finden: Bildschirmfoto 2015-03-20 um 13.14.44.png

    Das passt ja schon mal nicht...

  27. #27
    Contao-Nutzer
    Registriert seit
    12.05.2011.
    Beiträge
    86

    Standard

    Hallo Zusammenm,

    endlich funktioniert es. Vielen Dank noch mal für eure Hilfe!

    Hier die E-Mail vom Support, welche das Problem beheben konnte:


    Ursache ist die Funktion tmpfile(), welche von Contao verwendet wird um eine temporäre Datei anzulegen. Per Default versucht PHP diese im Verzeichnis /tmp zu erstellen, welches auf unseren Servern aus Sicherheitsgründen jedoch nicht beschreibbar ist.

    Leider bietet PHP keine Möglichkeit an, dies auf Seiten der Serverkonfiguration anzupassen.

    Die Funktion tmpfile() beachtet jedoch den Inhalt der Umgebungsvariable TMPDIR, sodass Sie darüber ein eigenes temporäres Verzeichnis angeben können.
    Mit der folgenden Zeile in der index.php von Contao sollte das Erstellen des ZIP-Archivs ohne Fehler funktionieren:

    putenv("TMPDIR=/is/htdocs/user_tmp/wp[TMPNAME]");

  28. #28
    Contao-Fan Avatar von WilhelmTell
    Registriert seit
    12.12.2014.
    Beiträge
    316

    Standard

    Zu schön, um nicht yt zu sein:
    https://www.youtube.com/watch?v=hMKhCaqw--0
    Merci menatwork/andreasisaak und auch Thraile für das Snippet.

    Zitat Zitat von Chacky Beitrag anzeigen
    index.php: putenv("TMPDIR=/is/htdocs/user_tmp/wp[TMPNAME]");
    Wär' das nicht ein Ticket auf github (contao/core) wert ?
    Geändert von WilhelmTell (22.03.2015 um 00:43 Uhr)

  29. #29
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Zitat Zitat von WilhelmTell Beitrag anzeigen

    Wär' das nicht ein Ticket auf github (contao/core) wert ?
    Nein, dass der Server passend konfiguriert ist ist Aufgabe des Hosters. Solche Anpassungen gehören ggf. In die initconfig

    Gesendet von meinem Xperia Arc S mit Tapatalk

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •