<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Capn3m0 WebSecurity &#187; internal server error</title>
	<atom:link href="http://www.capn3m0.org/tag/internal-server-error/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.capn3m0.org</link>
	<description>...hacking, security, wifi and more...</description>
	<lastBuildDate>Sat, 04 Feb 2012 16:29:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>[SOLUZIONE] Errori 500 e 504 in PhocaPDF</title>
		<link>http://www.capn3m0.org/soluzione-errori-500-e-504-in-phocapdf.html</link>
		<comments>http://www.capn3m0.org/soluzione-errori-500-e-504-in-phocapdf.html#comments</comments>
		<pubDate>Tue, 27 Dec 2011 17:14:48 +0000</pubDate>
		<dc:creator>capn3m0</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[conversione pdf]]></category>
		<category><![CDATA[errore 500]]></category>
		<category><![CDATA[errore 504]]></category>
		<category><![CDATA[internal server error]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[phocapdf]]></category>
		<category><![CDATA[phocapdf errore]]></category>
		<category><![CDATA[soluzione phocapdf]]></category>

		<guid isPermaLink="false">http://www.capn3m0.org/?p=4038</guid>
		<description><![CDATA[Questo di seguito è un veloce workaround per risolvere alcuni frequenti problemi di PhocaPDF legati alla generazione dei PDF partendo dagli articoli del Joomla. PhocaPDF è un plugin scaricabile gratuitamente che permette di aggiungere alcune comode funzioni quali appunto la trasformazione di un articolo Joomla in PDF e l&#8217;aggiunta di alcune personalizzazioni come il logo, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.capn3m0.org/wp-content/uploads/2011/12/phocapdf.jpg" rel="lightbox[4038]" title="PhocaPDF"><img class="alignleft size-thumbnail wp-image-4039" title="PhocaPDF" src="http://www.capn3m0.org/wp-content/uploads/2011/12/phocapdf-150x150.jpg" alt="[SOLUZIONE] Errori 500 e 504 in PhocaPDF" width="150" height="150" /></a>Questo di seguito è un veloce workaround per risolvere alcuni frequenti problemi di <strong>PhocaPDF</strong> legati alla generazione dei PDF partendo dagli articoli del Joomla.</p>
<p><a title="PhocaPDF" href="http://www.phoca.cz/phocapdf" target="_blank"><strong>PhocaPDF</strong></a> è un plugin scaricabile gratuitamente che permette di aggiungere alcune comode funzioni quali appunto la trasformazione di un articolo Joomla in PDF e l&#8217;aggiunta di alcune personalizzazioni come il logo, l&#8217;header, il footer, etc.</p>
<p>Presso alcuni Hosting può capitare che invece che la creazione del PDF generi errori quali:</p>
<ul>
<li><strong>504 Gateway Timeout</strong></li>
<li><strong>500 Internal Server Error</strong></li>
</ul>
<p>Questi errori difficilmente vengono segnalati nei log e pertanto sono difficili da individuare e risolvere.</p>
<p>Per esperienza personale ho potuto constatare che questi errori si manifestano poiché PhocaPDF prova di default ad utilizzare le Librerie <strong>ImageMagick per convertire e ridimensionare le immagini</strong>. Se queste ultime non sono presenti allora utilizzerà le Librerie GD.</p>
<p>Presso l&#8217;Hosting su cui ho avuto modo di testare questa problematica le Librerie ImageMagick, sebbene correttamente installate e funzionanti, quando vengono interrogate da <strong>PhocaPDF</strong> mandano in errore lo script generando migliaia di file di cache nel percorso:</p>
<p><strong>administrator/components/com_phocapdf/assets/tcpdf/cache</strong></p>
<p>causando di conseguenza l&#8217;<strong>errore 500 o 504.</strong></p>
<p>Per <strong>risolvere il problema</strong> basterà modificare il file:</p>
<p><strong>administrator/components/com_phocapdf/assets/tcpdf/tcpdf.php</strong></p>
<p>alla <strong>riga 7603</strong> sostituendo la voce:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">extension_loaded</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'imagick'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// ImageMagick</span></pre></div></div>

<p>con</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">extension_loaded</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'imagick'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// ImageMagick</span></pre></div></div>

<p>In questo modo si forzerà l&#8217;utilizzo delle Librerie GD che non daranno problemi e <strong>PhocaPDF</strong> convertirà correttamente l&#8217;articolo in PDF.</p>
<p>Se riscontrate problemi o anomalie scriveteci!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.capn3m0.org/soluzione-errori-500-e-504-in-phocapdf.html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guida all&#8217;ottimizzazione di WordPress &#8211; Parte 1</title>
		<link>http://www.capn3m0.org/guida-ottimizzazione-wordpress-1.html</link>
		<comments>http://www.capn3m0.org/guida-ottimizzazione-wordpress-1.html#comments</comments>
		<pubDate>Sun, 24 Oct 2010 11:49:51 +0000</pubDate>
		<dc:creator>capn3m0</dc:creator>
				<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Web&Cms]]></category>
		<category><![CDATA[deflate]]></category>
		<category><![CDATA[Gzip]]></category>
		<category><![CDATA[internal server error]]></category>
		<category><![CDATA[mod_deflate]]></category>
		<category><![CDATA[ottimizzazione]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[W3 EDGE]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.capn3m0.org/?p=453</guid>
		<description><![CDATA[In questo articolo e in quelli che seguiranno illustreremo alcuni utili consigli per ottimizzare le performance del nostro WordPress così da renderlo più veloce nel caricamento delle pagine. Per analizzare le performance e l&#8217;impatto delle nostre modifiche su di esse ci siamo serviti del plugin &#8220;YSlow&#8221; di Yahoo e &#8220;PageSpeed&#8221; di Google che offrono la [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.capn3m0.org/wp-content/uploads/2010/10/plugin-wordpress.jpg" rel="lightbox[453]" title="WordPress"><img class="alignleft size-thumbnail wp-image-454" title="WordPress" src="http://www.capn3m0.org/wp-content/uploads/2010/10/plugin-wordpress-150x150.jpg" alt="Guida allottimizzazione di WordPress   Parte 1" width="150" height="150" /></a>In questo articolo e in quelli che seguiranno illustreremo alcuni utili consigli per ottimizzare le performance del nostro <a href="http://www.wordpress.org" target="_blank"><strong>WordPress</strong></a> così da renderlo più veloce nel caricamento delle pagine.</p>
<p>Per analizzare le performance e l&#8217;impatto delle nostre modifiche su di esse ci siamo serviti del plugin &#8220;<a href="http://developer.yahoo.com/yslow/" target="_blank"><strong>YSlow</strong></a>&#8221; di Yahoo e &#8220;<a href="http://code.google.com/intl/it-IT/speed/page-speed/" target="_blank"><strong>PageSpeed</strong></a>&#8221; di Google che offrono la possibilità di visionare statistiche e analisi dettagliate delle varie aree del sito suggerendo le modifiche da effettuare per ottenere un punteggio migliore.</p>
<p><span id="more-453"></span><span style="font-size: large;"><strong>Come funziona?</strong></span></p>
<p>Solitamente i punteggi assegnati da YSlow e PageSpeed si basano su valutazioni effettuate sui singoli oggetti di una pagina Web quali i Css, i Javacript, la loro posizione nella pagina, il peso della pagina etc.</p>
<p>Tutti questi fattori hanno pesi diversi ai fini della valutazione finale ma, per ottimizzare le <strong>performance</strong> del sito è necessario concentrarsi sul numero di richieste Http generate, la posizione dei Javascript e il peso della pagina che, ovviamente, è composto da tutti i singoli oggetti quali immagini, css/js, codice,etc.</p>
<p>Il plugin W3 Total Cache<strong> agisce in particolar modo sul peso finale della pagina e sul numero di richieste Http generate</strong>. Come è noto al momento della richiesta di una pagina il Server provvede ad inviare tutti i singoli oggetti nell&#8217;ordine previsto nel codice sorgente al Browser dell&#8217;utente. Questo avviene ad ogni click di ogni utente. Se però, come è probabile, un articolo una volta pubblicato rimane invariato per giorni non è performante far elaborare ogni volta l&#8217;intera pagina al WebServer. Il plugin serve proprio a questo ossia a creare una copia &#8220;html&#8221; dell&#8217;intera pagina elaborata dal Browser per fare in modo che alle successive richieste venga servita direttamente la pagina html (l&#8217;output generato dal Server) invece che farla elaborare ogni volta.</p>
<p>In questo modo, analizzando una pagina con un Http Viewer come <a href="http://httpd.apache.org/docs/2.0/mod/mod_expires.html" target="_blank">Fiddler</a> o <a href="https://addons.mozilla.org/it/firefox/addon/966/" target="_blank">Tamper Data</a> si noterà che la prima richiesta genererà per esempio</p>
<p>100 richieste Http x 400 Kb x 5 secondi</p>
<p>mentre il seguente refresh solo</p>
<p>35 richieste Http x 114 kb x 2,4 secondi.</p>
<p>Oltre ciò è possibile applicare una compressione all&#8217;output così da ridurre ulteriormente i tempi di caricamento.</p>
<p>Procediamo!</p>
<p>Per prima cosa sono necessari i seguenti plugins:</p>
<ul>
<li><strong><a href="http://www.w3-edge.com/wordpress-plugins/w3-total-cache/" target="_blank">W3 Total Cache by W3 EDGE</a></strong> &#8211; consente di gestire in maniera avanzata il caching delle pagine, del Database e il Minify dei Css e Javascript. A mio avviso si tratta del miglior plugin disponibile attualmente per la gestione della cache e non appena lo si installa e attiva si riscontrano subito dei miglioramenti nei tempi di caricamento.</li>
<li><a href="http://www.prelovac.com/vladimir/wordpress-plugins/no-frames" target="_blank"><strong>No Frames</strong></a> -  permette di evitare che il proprio sito venga visualizzato in Frames aumentandone così il punteggio Seo.</li>
<li><a href="http://www.prelovac.com/vladimir/wordpress-plugins/footer-javascript" target="_blank"><strong>Javascript To Footer</strong></a> &#8211; utilizzando questo plugin tutti gli scripts Javascript del proprio sito verrano posizionati a fine pagina garantendo una maggior velocità di caricamento del sito.</li>
<li><a href="http://www.prelovac.com/vladimir/wordpress-plugins/seo-friendly-images" target="_blank"><strong>SEO Friendly Images</strong></a> &#8211; Aggiunge automaticamente i tag Html &#8220;ALT&#8221; e &#8220;TITLE&#8221; alle immagini utilizzate nei post così come consigliato dal W3C.</li>
</ul>
<p style="text-align: left;">
<hr />
<p><span style="font-size: large;"><strong>W3 Total Cache by W3 EDGE</strong></span></p>
<p style="text-align: left;">Per il plugin si suddivide in più aree ognuna delle quali è personalizzabile dall&#8217;utente.</p>
<p style="text-align: left;">A seconda dell&#8217;Hosting utilizzato alcune funzionalità possono non essere supportate e per evitare di impazzire nella configurazione ho provveduto a creare il file di configurazione adatto all&#8217;Hosting Linux Aruba. Se dovessero verificarsi degli errori nel suo utilizzo non esistate a contattarmi.</p>
<p style="text-align: left;">
<p><strong><a href="http://www.capn3m0.org/wp-content/uploads/2010/10/w3-total-cache-config.txt">W3 Total Cache Configuration &#8211; Hosting Linux Aruba</a></strong></p>
<p>Una volta scaricato è necessario modificare il riferimento alla sitemap. Per fare ciò aprite il file e andate alla riga 407 che apparirà nel seguente modo:</p>
<p><cite>&#8216;pgcache.prime.sitemap&#8217; =&gt; &#8216;http://www.xxxxxxx.xxx/sitemap.xml&#8217;,</cite></p>
<p>&nbsp;</p>
<p>e sostituite l&#8217;url con quello della vostra sitemap. Per questo sito, quindi, andrà inserito:</p>
<p><cite>&#8216;pgcache.prime.sitemap&#8217; =&gt; &#8216;http://www.capn3m0.org/sitemap.xml&#8217;,</cite></p>
<p>Eseguita tale modifica rinominate il file da:</p>
<p><cite>w3-total-cache-config.txt</cite></p>
<p>a</p>
<p><cite>w3-total-cache-config.php</cite></p>
<p>ed importatelo nel plugin.</p>
<p>Accedete al vostro Pannello Admin del WordPress e seguite il percorso:</p>
<p><strong>Performace -&gt; General Settings</strong></p>
<p>In basso troverete le opzioni di &#8220;Import/Export&#8221; come nella seguente figura:</p>
<p style="text-align: center;"><a href="http://www.capn3m0.org/wp-content/uploads/2010/10/w3_import.png" rel="lightbox[453]" title="W3 Total Cache Import/Export"><img class="size-medium wp-image-456 aligncenter" title="W3 Total Cache Import/Export" src="http://www.capn3m0.org/wp-content/uploads/2010/10/w3_import-300x142.png" alt="Guida allottimizzazione di WordPress   Parte 1" width="300" height="142" /></a></p>
<p style="text-align: left;">Importate il file &#8220;<strong>w3-total-cache-config.php</strong>&#8221; e il gioco è fatto!</p>
<p style="text-align: left;">Navigate un po&#8217; il sito e tornate sulle stesse pagine almeno due volte per verificare come appaiono dopo che sono state cachate. Se si dovessero verificare dei problemi con Javascript o Css provvedete a disabilitare tutte le opzioni di Minify del plugin.</p>
<p style="text-align: left;"><strong>N.B. &#8211; Potrebbero verificarsi degli errori &#8220;500 Internal Server Error&#8221; poiché il plugin modifica automaticamente il file &#8220;.htaccess&#8221; di WordPress e non tutti gli Shared Hosting supportano alcune istruzioni che vengono inserite. No panic!</strong></p>
<p style="text-align: left;"><strong>Scaricate il file &#8220;.htaccess&#8221; seguente e sostituitelo a quell presente nella root di WordPress e il problema è risolto.</strong></p>
<p style="text-align: left;"><strong><a href="http://www.capn3m0.org/wp-content/uploads/2010/10/htaccess.zip">.htaccess WordPress + W3 Total Cache + Mod_Deflate On</a></strong></p>
<p style="text-align: left;">Come indicato all&#8217;inizio dell&#8217;articolo oltre al caching, che riduce notevolmente il numero di richieste e la dimensione delle pagine, è possibile applicare una ulteriore compressione. Nel file .htaccess fornito ho provveduto ad inserire le istruzioni che abilitano il <a href="http://httpd.apache.org/docs/2.0/mod/mod_deflate.html" target="_blank"><strong>Mod_Deflate</strong></a> di Apache che, appunto, applicano la compressione all&#8217;output inviato all&#8217;utente.</p>
<p style="text-align: left;">Le righe che svolgono tale compito sono le seguenti:</p>
<p style="text-align: left;"><cite>SetOutputFilter DEFLATE<br />
AddOutputFilter DEFLATE text/plain<br />
AddOutputFilter DEFLATE text/xml<br />
AddOutputFilter DEFLATE application/xhtml+xml<br />
AddOutputFilter DEFLATE text/css<br />
AddOutputFilter DEFLATE application/xml<br />
AddOutputFilter DEFLATE image/svg+xml<br />
AddOutputFilter DEFLATE application/rss+xml<br />
AddOutputFilter DEFLATE application/atom_xml<br />
AddOutputFilter DEFLATE application/x-javascript<br />
AddOutputFilter DEFLATE application/x-httpd-php<br />
AddOutputFilter DEFLATE application/x-httpd-fastphp<br />
AddOutputFilter DEFLATE application/x-httpd-eruby<br />
AddOutputFilter DEFLATE text/html<br />
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary<br />
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary<br />
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary<br />
SetEnvIfNoCase Request_URI \.avi$ no-gzip dont-vary<br />
SetEnvIfNoCase Request_URI \.mov$ no-gzip dont-vary<br />
SetEnvIfNoCase Request_URI \.mp3$ no-gzip dont-vary<br />
SetEnvIfNoCase Request_URI \.mp4$ no-gzip dont-vary<br />
SetEnvIfNoCase Request_URI \.rm$ no-gzip dont-vary<br />
BrowserMatch ^Mozilla/4 gzip-only-text/html<br />
BrowserMatch ^Mozilla/4\.0[678] no-gzip<br />
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html</cite></p>
<hr />
<p>In seguito procedete con l&#8217;installazione degli altri plugins indicati; la loro configurazione di default andrà bene.</p>
<p>A questo punto le operazioni sono terminate e, se tutto è andato bene, il vostro sito guadagnerà qualche punto nelle valutazioni di YSlow e PageSpeed.</p>
<p>Ma non ci fermiamo qui!</p>
<p>Faccio presente che in alcuni Shared Hosting è presente anche il Modulo Apache chiamato &#8220;<a href="http://httpd.apache.org/docs/2.0/mod/mod_expires.html" target="_blank"><strong>Mod_expire</strong></a>&#8221; che consente di indicare al Browser di salvare gli oggetti nella cache locale del Pc per un periodo da noi prefissato.</p>
<p>Questa configurazione aumenta notevolemente i tempi di caricamento del sito poiché tutti gli oggetti quali parti del template, immagini, css e javascript saranno già presenti nell&#8217;Hard Disk del visitatore e pertanto i dati <strong>REALMENTE</strong> da scaricare saranno minimi.</p>
<p>Come è facile intuire aprendo due articoli a caso di questo sito le differenze tra le due pagine sono limitate all&#8217;immagine dell&#8217;articolo, il testo di esso e altri pochissimi dati. Ogni volta che navighiamo, quindi, scarichiamo per intero delle pagine da 400 kb (template,css,testo,immagini,javascript,video,etc) in cui in realtà le differenze sono solo di 10 kb (testo,immagini).</p>
<p>Il Mod_Expire consente proprio di evitare questo inutile spreco di banda, richieste DNS e request HTTP, facendo salvare tutto nel Browser locale e interrogando realmente il sito solo per richiedere i pochi dati necessari.</p>
<p>Ecco di seguito i risultati ottenuti applicando quanto indicato in questo articolo:</p>
<p style="text-align: center;"><a href="http://www.capn3m0.org/wp-content/uploads/2010/10/yslow_capn3m0.png" rel="lightbox[453]" title="YSlow Result"><img class="size-medium wp-image-458 aligncenter" title="YSlow Result" src="http://www.capn3m0.org/wp-content/uploads/2010/10/yslow_capn3m0-300x148.png" alt="Guida allottimizzazione di WordPress   Parte 1" width="300" height="148" /></a></p>
<p style="text-align: center;"><a href="http://www.capn3m0.org/wp-content/uploads/2010/10/yslow_stats_capn3m0.png" rel="lightbox[453]" title="YSlow Stats"><img class="aligncenter size-medium wp-image-459" title="YSlow Stats" src="http://www.capn3m0.org/wp-content/uploads/2010/10/yslow_stats_capn3m0-300x96.png" alt="Guida allottimizzazione di WordPress   Parte 1" width="300" height="96" /></a></p>
<p>Come si può constatare è stato classificato come <strong>Grade B</strong> in YSlow tra gli &#8220;Smaller Site or Blog&#8221; e le richieste sono passate da 49 a 10 con una riduzione di 300k sul peso delle pagine.</p>
<p><strong>Postate i risultati per i vostri siti !!!</strong></p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">
<h2>W3 Total Cache by W3 EDGE</h2>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.capn3m0.org/guida-ottimizzazione-wordpress-1.html/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>[RAW FIX] &#8211; JOOMLA &#8211; Errore 500 in &#8220;Gestione Media&#8221; (com_media)</title>
		<link>http://www.capn3m0.org/raw-fix-joomla-errore-500-in-gestione-media-com_media.html</link>
		<comments>http://www.capn3m0.org/raw-fix-joomla-errore-500-in-gestione-media-com_media.html#comments</comments>
		<pubDate>Wed, 21 Oct 2009 21:35:57 +0000</pubDate>
		<dc:creator>capn3m0</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[com_media]]></category>
		<category><![CDATA[internal server error]]></category>
		<category><![CDATA[joomla]]></category>

		<guid isPermaLink="false">http://www.capn3m0.org/?p=287</guid>
		<description><![CDATA[Come feci in occasione del problema nell&#8216;upload delle immagini in Virtuemart, questa volta vi illustro un tricks per risolvere un fastidioso problema che si può avere con il Joomla (solo nelle versioni 1.5.x) quando le cartelle &#8220;images&#8221; e &#8220;media&#8221; raggiungono una dimensione e un numero di file/cartelle elevato. Questo CMS di default (personalmente non ne [...]]]></description>
			<content:encoded><![CDATA[<p>Come feci in occasione del problema nell<a href="http://www.capn3m0.org/raw-fix-virtuemart-errore-500-upload-immagini.html">&#8216;upload delle immagini in Virtuemart</a>, questa volta vi illustro un tricks per risolvere un fastidioso problema che si può avere con il<strong> <a href="http://www.joomla.org/" target="_blank">Joomla</a> (solo nelle versioni 1.5.x)</strong> quando le cartelle &#8220;images&#8221; e &#8220;media&#8221; raggiungono una dimensione e un numero di file/cartelle elevato.</p>
<p>Questo CMS di default (personalmente non ne capisco il motivo) ha abilitata la &#8220;ricerca ricorsiva&#8221; per tutto ciò che riguarda l&#8217;elencazione (listing) di file e cartelle di una path. In questo caso in particolare mi riferisco al componente &#8220;<strong>com_media</strong>&#8221; che si occupa della gestione dei contenuti multimediali quali foto e video. Nella pagina principale dell&#8217;Amministrazione del Joomla andando su &#8220;<strong>Gestione Media</strong>&#8221; si accede ad un interfaccia stile &#8220;client ftp&#8221; che permette di navigare all&#8217;interno delle cartelle &#8220;images&#8221; e &#8220;media&#8221; ed eseguire le normali operazioni di cancellazione/modifica/etc su file e cartelle in esse contenute.</p>
<p><span id="more-287"></span>Il problema sorge quando il numero di file contenuti in queste due cartelle raggiunge dimensioni tali da non rendere possibile il listing di tutto il contenuto nei <strong>120 secondi di Timeout</strong> impostati sul Server (tranne servizi dedicati appostivamente al Joomla i normali Hosting Provider impostano il max_execution_time a 120 secondi). Al termine di tale tempo se l&#8217;operazione non è completata, a seconda della configurazione e della versione del WebServer, viene mostrato l&#8217;errore &#8220;<strong>500 Internal Server Error</strong>&#8221; o <strong>&#8220;504 Gateway Timeout</strong>&#8220;. Tradotto in parole povere significa che lo script ha provato ad eseguire l&#8217;operazione ma il processo era ancora in corso trascorsi 2 minuti e pertanto è stato bloccato.</p>
<p>Per disabilitare la &#8220;ricerca ricorsiva&#8221;, quindi, è necessario aprire il file &#8220;<strong>manager.php</strong>&#8221; presente nella path:</p>
<p><cite>&lt;root_di_Joomla&gt;/administrator/components/com_media/models/manager.php</cite></p>
<p>e successivamente posizionarsi alle <strong>Righe 63 e 102</strong> che appariranno così:</p>
<p><br class="spacer_" /></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$folders</span> <span style="color: #339933;">=</span> JFolder<span style="color: #339933;">::</span><span style="color: #004000;">folders</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$base</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'.'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><br class="spacer_" /></p>
<p>e modificarle variando il <strong>1° true</strong> su <strong>false</strong> come di seguito:</p>
<p><br class="spacer_" /></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$folders</span> <span style="color: #339933;">=</span> JFolder<span style="color: #339933;">::</span><span style="color: #004000;">folders</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$base</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'.'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><br class="spacer_" /></p>
<p>Di seguito le prime righe della funzione che viene richiamata che dimostrano che il parametro variato va a disabilitare la ricorsione.</p>
<p><br class="spacer_" /></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">	<span style="color: #009933; font-style: italic;">/**
	 * Utility function to read the folders in a folder.
	 *
	 * @param	string	The path of the folder to read.
	 * @param	string	A filter for folder names.
	 * @param	mixed	True to recursively search into sub-folders, or an
	 * integer to specify the maximum depth.
	 * @param	boolean	True to return the full path to the folders.
	 * @param	array	Array with names of folders which should not be shown in
	 * the result.
	 * @return	array	Folders in the given folder.
	 * @since 1.5
	 */</span>
	<span style="color: #000000; font-weight: bold;">function</span> folders<span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #339933;">,</span> <span style="color: #000088;">$filter</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'.'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$recurse</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">,</span> <span style="color: #000088;">$fullpath</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">,</span> <span style="color: #000088;">$exclude</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'.svn'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'CVS'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">// Initialize variables</span>
		<span style="color: #000088;">$arr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Check to make sure the path valid and clean</span>
		<span style="color: #000088;">$path</span> <span style="color: #339933;">=</span> JPath<span style="color: #339933;">::</span><span style="color: #004000;">clean</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// Is the path a folder?</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">is_dir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			JError<span style="color: #339933;">::</span><span style="color: #004000;">raiseWarning</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">21</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'JFolder::folder: '</span> <span style="color: #339933;">.</span> JText<span style="color: #339933;">::</span>_<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Path is not a folder'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Path: '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$path</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// read the source directory</span>
		<span style="color: #000088;">$handle</span> <span style="color: #339933;">=</span> <span style="color: #990000;">opendir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span> <span style="color: #339933;">=</span> <span style="color: #990000;">readdir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!==</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'.'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">'..'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">in_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #339933;">,</span> <span style="color: #000088;">$exclude</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$dir</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$path</span> <span style="color: #339933;">.</span> DS <span style="color: #339933;">.</span> <span style="color: #000088;">$file</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$isDir</span> <span style="color: #339933;">=</span> <span style="color: #990000;">is_dir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$dir</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$isDir</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					<span style="color: #666666; font-style: italic;">// Removes filtered directories</span>
					<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/<span style="color: #006699; font-weight: bold;">$filter</span>/&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
						<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$fullpath</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
							<span style="color: #000088;">$arr</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$dir</span><span style="color: #339933;">;</span>
						<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
							<span style="color: #000088;">$arr</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$file</span><span style="color: #339933;">;</span>
						<span style="color: #009900;">&#125;</span>
					<span style="color: #009900;">&#125;</span>
					<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$recurse</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
						<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_integer</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$recurse</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
							<span style="color: #000088;">$arr2</span> <span style="color: #339933;">=</span> JFolder<span style="color: #339933;">::</span><span style="color: #004000;">folders</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$dir</span><span style="color: #339933;">,</span> <span style="color: #000088;">$filter</span><span style="color: #339933;">,</span> <span style="color: #000088;">$recurse</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #000088;">$fullpath</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
						<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
							<span style="color: #000088;">$arr2</span> <span style="color: #339933;">=</span> JFolder<span style="color: #339933;">::</span><span style="color: #004000;">folders</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$dir</span><span style="color: #339933;">,</span> <span style="color: #000088;">$filter</span><span style="color: #339933;">,</span> <span style="color: #000088;">$recurse</span><span style="color: #339933;">,</span> <span style="color: #000088;">$fullpath</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
						<span style="color: #009900;">&#125;</span>
&nbsp;
						<span style="color: #000088;">$arr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array_merge</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$arr</span><span style="color: #339933;">,</span> <span style="color: #000088;">$arr2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #009900;">&#125;</span>
				<span style="color: #009900;">&#125;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #990000;">closedir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #990000;">asort</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$arr</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$arr</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span></pre></div></div>

<p><br class="spacer_" /></p>
<p>Come spiegato nei commenti della funzione stessa l&#8217;impostare su &#8220;false&#8221; il 3° parametro disabilita la ricorsione evitando il manifestarsi dell&#8217;errore di Timeout.<br />
 In alternativa è possibile modificare il parametro inserendo un valore numerico intero. Così facendo si indicano quanti livelli deve scendere nella ricerca dei file/cartelle.</p>
<p>Esempio della modifica da apportare se si vuole che la ricerca scenda al massimo di 3 livelli, ossia:</p>
<p><cite>&lt;root_di_Joomla&gt;/images/cartella1/cartella2/cartella3</cite></p>
<p>La riga andrebbe modificata nel seguente modo:</p>
<p><br class="spacer_" /></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$folders</span> <span style="color: #339933;">=</span> JFolder<span style="color: #339933;">::</span><span style="color: #004000;">folders</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$base</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'.'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><br class="spacer_" /></p>
<p>Fatto ciò il problema sarò risolto e all&#8217;apertura del &#8220;<strong>com_media</strong>&#8221; verrà effettuata la ricerca per le sole cartelle &#8220;images&#8221; e &#8220;media&#8221; e per il numero di livelli da voi impostato. Tale modifica crea un piccolo problema visivo che, a mio avviso, non è molto rilevante poiché disabilitando la ricorsività dal menu ad albero del &#8220;Gestione Media&#8221; non si potrà vedere il solito &#8220;+&#8221; davanti alle cartelle che ne contengono delle altre. Analizzando solo il primo livello delle cartelle non può creare l&#8217;albero di navigazione fin da subito e pertanto si aggiornerà man mano che si scende nelle sottocartelle.</p>
<p>Per un problema risolto ritengo sia una piccola perdita.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.capn3m0.org/raw-fix-joomla-errore-500-in-gestione-media-com_media.html/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>[RAW FIX] &#8211; VIRTUEMART &#8211; Errore 500 nell&#8217;upload immagini</title>
		<link>http://www.capn3m0.org/raw-fix-virtuemart-errore-500-upload-immagini.html</link>
		<comments>http://www.capn3m0.org/raw-fix-virtuemart-errore-500-upload-immagini.html#comments</comments>
		<pubDate>Mon, 09 Mar 2009 15:33:12 +0000</pubDate>
		<dc:creator>capn3m0</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[error 500 internal server error]]></category>
		<category><![CDATA[internal server error]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[virtuemart]]></category>

		<guid isPermaLink="false">http://www.capn3m0.org/?p=269</guid>
		<description><![CDATA[Anche in questa occasione ciò che pubblico non è una vera e propria Fix ma un modo &#8220;rudimentale&#8221; per aggirare il problema e garantire il funzionamento dell&#8217;applicativo. In questo caso parliamo del componente &#8220;Virtuemart&#8221; di Joomla che consente di trasformare il Cms in un negozio on line. In alcuni Hosting a causa della configurazione del [...]]]></description>
			<content:encoded><![CDATA[<p>Anche in questa occasione ciò che pubblico non è una vera e propria Fix ma un modo &#8220;rudimentale&#8221; per aggirare il problema e garantire il funzionamento dell&#8217;applicativo.</p>
<p>In questo caso parliamo del componente &#8220;<a href="http://virtuemart.net/" target="_blank"><strong>Virtuemart</strong></a>&#8221; di <strong>Joomla </strong>che consente di trasformare il Cms in un negozio on line. In alcuni Hosting a causa della configurazione del &#8220;Timeout CGI&#8221; impostato in Apache possono verificarsi errori &#8220;500 Internal Server Error&#8221; in occasione dell&#8217;aggiunta di nuove immagini per un prodotto.</p>
<p><span id="more-269"></span>Questo perché quando si carica l&#8217;interfaccia di upload il Virtuemart esegue un check su tutti i file e cartelle della cartella predefinita delle immagini. Se, quindi, sono presenti numerosi file lo script non riesce a terminare in tempo la verifica di ogni singolo file andando in errore di &#8220;Timeout CGI&#8221;.</p>
<p>Nel mio attuale Hosting tale Timeout è impostato a 60 secondi e, quindi, ho provveduto ad editare direttamente il codice sorgente del Virtuemart per fare in modo che non esegua tale verifica indipendentemente da quanti file son presenti nella cartella predefinita.</p>
<p>Per fare ciò è necessario aprire il file &#8220;<strong>product.file_form.php</strong>&#8221; presente nella path:</p>
<p><cite>&lt;root_di_Joomla&gt;/administrator/components/com_virtuemart/html/</cite></p>
<p>e successivamente posizionarsi alla <strong>Riga 105</strong> che apparirà come segue:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$downloadRootFiles</span> <span style="color: #339933;">=</span> vmReadDirectory<span style="color: #009900;">&#40;</span>DOWNLOADROOT<span style="color: #339933;">,</span> <span style="color: #0000ff;">'.'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>e modificarla variando il parametro da &#8220;<strong>true</strong>&#8221; a &#8220;<strong>false</strong>&#8221; come di seguito:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$downloadRootFiles</span> <span style="color: #339933;">=</span> vmReadDirectory<span style="color: #009900;">&#40;</span>DOWNLOADROOT<span style="color: #339933;">,</span> <span style="color: #0000ff;">'.'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>In questo modo il problema dell&#8217;error &#8220;500 Internal Server Error&#8221; in fase di upload dei file sarà risolto.</p>
<p>Tengo a precisare che la versione del <strong>Virtuemart </strong>su cui ho eseguito tali modifiche è la <strong>1.1.3</strong>.</p>
<p>Resto a disposizione per qualsiasi chiarimento o qualora dopo tali modifiche si riscontrino altri generi di problematiche.</p>
<p><strong>[11/03/2009 - 00.40] AGGIORNAMENTO</strong> <strong>#1</strong>: Ho fatto delle verifiche per validare il perché di tale modifica e vi riporto direttamente il codice dell&#8217;intera funzione &#8220;<strong>vmReadDirectory</strong>&#8221; presa dal file originale &#8220;<strong>ps_main.php</strong>&#8220;:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009933; font-style: italic;">/**
* Utility function to read the files in a directory
* @param string The file system path
* @param string A filter for the names
* @param boolean Recurse search into sub-directories
* @param boolean True if to prepend the full path to the file name
*/</span>
<span style="color: #000000; font-weight: bold;">function</span> vmReadDirectory<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$path</span><span style="color: #339933;">,</span> <span style="color: #000088;">$filter</span><span style="color: #339933;">=</span><span style="color: #0000ff;">'.'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$recurse</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">,</span> <span style="color: #000088;">$fullpath</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">false</span>  <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$arr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!@</span><span style="color: #990000;">is_dir</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$path</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$arr</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000088;">$handle</span> <span style="color: #339933;">=</span> <span style="color: #990000;">opendir</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$path</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span> <span style="color: #339933;">=</span> <span style="color: #990000;">readdir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$dir</span> <span style="color: #339933;">=</span> vmPathName<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$path</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/'</span><span style="color: #339933;">.</span><span style="color: #000088;">$file</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">false</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$isDir</span> <span style="color: #339933;">=</span> <span style="color: #990000;">is_dir</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$dir</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">&quot;.&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">&quot;..&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;/<span style="color: #006699; font-weight: bold;">$filter</span>/&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$file</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$fullpath</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					<span style="color: #000088;">$arr</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span> vmPathName<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$path</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/'</span><span style="color: #339933;">.</span><span style="color: #000088;">$file</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">false</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
					<span style="color: #000088;">$arr</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$file</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$recurse</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #000088;">$isDir</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$arr2</span> <span style="color: #339933;">=</span> vmReadDirectory<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$dir</span><span style="color: #339933;">,</span> <span style="color: #000088;">$filter</span><span style="color: #339933;">,</span> <span style="color: #000088;">$recurse</span><span style="color: #339933;">,</span> <span style="color: #000088;">$fullpath</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$arr</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array_merge</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$arr</span><span style="color: #339933;">,</span> <span style="color: #000088;">$arr2</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #990000;">closedir</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$handle</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">asort</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$arr</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$arr</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Come spiegato nei commenti della funzione stessa l&#8217;impostare su &#8220;false&#8221; il 3° parametro disabilita la ricorsione evitando che il check dei file venga effettuato anche nelle sottocartelle generando l&#8217;errore di Timeout (Timeout CGI = 60 sec; max_execution_time = 120).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.capn3m0.org/raw-fix-virtuemart-errore-500-upload-immagini.html/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ottimizzare le performance del proprio sito &#8211; php.ini</title>
		<link>http://www.capn3m0.org/ottimizzare-le-performance-del-proprio-sito-phpini.html</link>
		<comments>http://www.capn3m0.org/ottimizzare-le-performance-del-proprio-sito-phpini.html#comments</comments>
		<pubDate>Fri, 26 Sep 2008 13:09:21 +0000</pubDate>
		<dc:creator>capn3m0</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Compressione gzip]]></category>
		<category><![CDATA[Gzip]]></category>
		<category><![CDATA[Hosting]]></category>
		<category><![CDATA[internal server error]]></category>
		<category><![CDATA[output compression]]></category>
		<category><![CDATA[output handler]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpinfo]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[velocità]]></category>
		<category><![CDATA[zlib]]></category>

		<guid isPermaLink="false">http://www.capn3m0.org/?p=67</guid>
		<description><![CDATA[Spesso capita di avere problemi di velocità quando si ha il proprio sito in soluzioni Hosting Condiviso in quanto sullo stesso Server sono presenti centinaia o migliaia di domini. Può capitare, a volte, che il proprio sito subisca rallentamenti dovuti ad un innalzamento del carico generato da un altro sito presente nel medesimo Server. Non [...]]]></description>
			<content:encoded><![CDATA[<p>Spesso capita di avere problemi di velocità quando si ha il proprio sito in soluzioni Hosting Condiviso in quanto sullo stesso Server sono presenti centinaia o migliaia di domini. Può capitare, a volte, che il proprio sito subisca rallentamenti dovuti ad un innalzamento del carico generato da un altro sito presente nel medesimo Server.</p>
<p>Non vi sono consigli veri e propri da dare in merito ma, per mia esperienza personale, l&#8217;utilizzo di un &#8220;<strong>php.ini</strong>&#8221; con abilitate alcune funzioni quali, ad esempio, la &#8220;<strong>Compressione Gzip</strong>&#8220;, permette di diminuire il numero di volte in cui il proprio sito va in <strong>Timeout</strong> o in errore &#8220;<strong>500 &#8211; Internal Server Error</strong>&#8220;.</p>
<p>La <strong>Compressione Gzip </strong>consente di far si che il Server comprima alcuni oggetti delle pagine ottimizzando così le performance in quanto il &#8220;peso&#8221; generale della pagina risulta ridotto.</p>
<p><span id="more-67"></span></p>
<p>Per attivare tale opzione vi sono vari modi ma, sinceramente, io preferisco utilizzare l&#8217;override tramite &#8220;php.ini&#8221;. Tale file contiene tutte le configurazioni del Web Server che sono, praticamente, quelle che vengono visualizzate quando si esegue il comando &#8220;phpinfo()&#8221; del Php. Per vederlo in azione basta creare e, successivamente, caricare via browser una pagina .php contenete le seguenti righe:</p>
<blockquote><p>&lt;?php</p>
<p>phpinfo();</p>
<p>?&gt;</p></blockquote>
<p>Utilizzando un php.ini opportunamente modificato è possibile variare (quando consentito del Provider) alcuni parametri come, ad esempio, il &#8220;<strong>memory_limit</strong>&#8220;, il &#8220;<strong>max_execution_time</strong>&#8220;, l&#8217;&#8221;<strong>output_buffering</strong>&#8220;, etc.</p>
<p>A questo link potete leggere tutti i parametri impostabili in tale file e la loro descrizione.</p>
<p>Tornando al discorso &#8220;<strong>Compressione Gzip</strong>&#8221; eccovi di seguito il codice da inserire nel vostro &#8220;php.ini&#8221; per abilitarla.</p>
<p>Io utilizzo il metodo che si appoggia alle <a href="http://www.zlib.net/" target="_blank">Librerie Zlib</a>. Il file &#8220;php.ini&#8221; per utilizzarle è il seguente:</p>
<blockquote><p>output_buffering = 4096<br />
output_handler = <em></em><br />
zlib.output_compression = On<br />
zlib.output_compression_level = 3<br />
safe_mode = Off<br />
max_execution_time = 120<br />
memory_limit = 24M<br />
post_max_size = 8M<br />
register_globals = On<br />
upload_max_filesize = 18M<br />
variables_order = GPCS<br />
disable_functions = system,popen,dl,passthru,proc_open,shell_exec<br />
enable_dl = Off<br />
error_reporting = 6135<br />
expose_php = Off<br />
extension_dir = ./<br />
include_path = &#8220;.:/php/lib/php/&#8221;<br />
log_errors = On<br />
register_argc_argv = Off<br />
safe_mode_exec_dir =<br />
sendmail_from = me@localhost.com<br />
upload_tmp_dir = &#8220;/tmp/&#8221;<br />
user_dir = &#8220;home&#8221;<br />
y2k_compliance = Off</p></blockquote>
<p>Per chi non avesse sbattimento eccovi il file già preparato da copiare nella root del proprio sito (o dove richiesto):</p>
<p><a href="http://www.capn3m0.org/wp-content/uploads/2008/09/php.ini">Php.ini &#8211; Compressione Gzip On &#8211; Librerie Zlib</a></p>
<p>In alternativa a tale metodo è possibile abilitare la compressione utilizzando le Gzip e, in tal caso, il codice da inserire è il seguente:</p>
<blockquote><p>output_buffering = 4096<br />
output_handler = ob_gzhandler<br />
safe_mode = Off<br />
max_execution_time = 120<br />
memory_limit = 24M<br />
post_max_size = 8M<br />
register_globals = On<br />
upload_max_filesize = 18M<br />
variables_order = GPCS<br />
disable_functions = system,popen,dl,passthru,proc_open,shell_exec<br />
enable_dl = Off<br />
error_reporting = 6135<br />
expose_php = Off<br />
extension_dir = ./<br />
include_path = &#8220;.:/php/lib/php/&#8221;<br />
log_errors = On<br />
register_argc_argv = Off<br />
safe_mode_exec_dir =<br />
sendmail_from = me@localhost.com<br />
upload_tmp_dir = &#8220;/tmp/&#8221;<br />
user_dir = &#8220;home&#8221;<br />
y2k_compliance = Off</p></blockquote>
<p>e questo il file già preparato:</p>
<p><a href="http://www.capn3m0.org/wp-content/uploads/2008/09/php1.ini">Php.ini &#8211; Compressione Gzip On &#8211; Librerie Gzip</a></p>
<p><strong>NOTE</strong> &#8211; Il file &#8220;php.ini&#8221; ha la particolarità di resettare alle impostazioni di default di Apache le eventuali impostazioni  omesse. Se inserite solo una riga contenente l&#8217;impostazione da cambiare le restanti verrebbero resettate ai valori minimi. E&#8217; quindi importante inserire sempre tutte le impostazioni di base necessarie per evitare il crearsi di tale situazione. Il file da me pubblicato vale per il mio Hosting e, quindi, è possibile che su altri Provider crei problemi oppure necessiti di maggiori impostazioni inserite.</p>
<p>Se riscontrate problemi contattatemi tramite i Commenti che provvederò a darvi una mano.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.capn3m0.org/ottimizzare-le-performance-del-proprio-sito-phpini.html/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

<!-- Served from: www.capn3m0.org @ 2012-02-05 03:40:37 by W3 Total Cache -->
