<?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>&#60;?blog &#187; Home.pl</title>
	<atom:link href="http://blog.visionsoftware.pl/tag/home-pl/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.visionsoftware.pl</link>
	<description>...nie tylko o programowaniu</description>
	<lastBuildDate>Sun, 23 Mar 2014 19:23:43 +0000</lastBuildDate>
	<language>pl-PL</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>CMS Made Simple na Home.pl a dostęp do /tmp/cache</title>
		<link>http://blog.visionsoftware.pl/programowanie-php/cms-made-simple-na-home-pl-a-dostep-do-tmpcache.html</link>
		<comments>http://blog.visionsoftware.pl/programowanie-php/cms-made-simple-na-home-pl-a-dostep-do-tmpcache.html#comments</comments>
		<pubDate>Mon, 31 Oct 2011 20:14:40 +0000</pubDate>
		<dc:creator><![CDATA[Marcin Fliszta]]></dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[CMS Made Simple]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Home.pl]]></category>
		<category><![CDATA[tmp]]></category>

		<guid isPermaLink="false">http://blog.visionsoftware.pl/?p=379</guid>
		<description><![CDATA[Osoby wdrażające CMS Made Simple na serwerach wirtualnych Home.pl mogą napotkać pewien problem. Po instalacji strona wyświetlała się bez żadnego formatowania, bez przetwarzania arkuszy styli CSS. Dostęp do nich kończy się na zwróceniu błędu 403 Forbidden. Podobna sytuacja ma miejsce przy działaniu niektórych pluginów, np. Captcha. Problem ten może wystąpić także na innych serwerach, a ma związek z prawami dostępu do katalogu /tmp/cache, w którym CMS zapisuje różnego rodzaju dane. W momencie pisania artykułu CMS Made [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Osoby wdrażające CMS Made Simple na serwerach wirtualnych Home.pl mogą napotkać pewien problem. Po instalacji strona wyświetlała się bez żadnego formatowania, bez przetwarzania arkuszy styli CSS. Dostęp do nich kończy się na zwróceniu błędu 403 Forbidden. Podobna sytuacja ma miejsce przy działaniu niektórych pluginów, np. Captcha. Problem ten może wystąpić także na innych serwerach, a ma związek z prawami dostępu do katalogu <code>/tmp/cache</code>, w którym CMS zapisuje różnego rodzaju dane.<span id="more-379"></span></p>
<p>W momencie pisania artykułu CMS Made Simple był dostępny w wersji 1.10 i i takiej dotyczą niniejsze informacje. Oczywiście problem występuje we wcześniejszych, oraz może się pojawić w późniejszych edycjach.</p>
<h3>Na czym polega problem?</h3>
<p>Na wirtualnych serwerach Home.pl, ale taka sytuacja może mieć miejsce na innych, dostęp do katalogu <code>tmp</code> jest ograniczony. Z założenia ma on służyć do zapisu różnych danych tymczasowych, takich jak np. sesje. Ze względów bezpieczeństwa jest on niedostępny z zewnątrz.</p>
<p>Cały problem polega na tym, że od wersji 1.8 CMS Made Simple generuje arkusze CSS do statycznych plików i umieszcza je w katalogu <code>/tmp/cache</code>. O ile potrafi je w tym przypadku bez problemu zapisać, to już przy dostępie z zewnątrz po HTTP otrzymujemy wspomniany wcześniej błąd 403 Forbidden, czyli brak dostępu.</p>
<h3>Rozwiązanie problemu nr 1 – inny sposób generowania CSS</h3>
<p>Pierwszym i najszybszym sposobem na niedogodność, jest zmiana sposobu generowania plików CSS, a konkretnie do powrócenia do starej możliwości stosowanej w CMS Made Simple. Wystarczy więc zamienić w szablonie wywołanie <code>{cms_stylesheet}</code> na <code>{stylesheet}</code>.</p>
<p>Możemy to zrobić w panelu administracyjnym, wchodząc w menu w Wygląd -&gt; Szablony i wybrać odpowiedni/e szablon/y.</p>
<p>W ten sposób zamiast dołączenia CSS z katalogu /tmp/cache w postaci</p>
<pre class="brush: xml; light: true; title: ; notranslate">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://www.moja-strona.pl/cache/stylesheet_50_132723884.css&quot; media=&quot;all&quot;&gt;</pre>
<p>w wygenerowanym pliku HTML otrzymamy:</p>
<pre class="brush: xml; light: true; title: ; notranslate">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;all&quot; href=&quot;http://www.fmoja-strona.pl/stylesheet.php?cssid=50&amp;mediatype=all&quot; /&gt;</pre>
<h3>Rozwiązanie problemu nr 2 – zmiana w konfiguracji</h3>
<p>I tu pojawia się drobny problem. Pierwszym krokiem w zmianie jest oczywiście sprawdzenie zawartości pliku <code>config.php</code>. Tu niestety możemy się rozczarować &#8211; nie ma w nim odpowiedniej opcji, umożliwiającej szybką zmianę. Jedyną związaną z tym katalogiem zmienną jest ustawienie</p>
<pre class="brush: php; light: true; title: ; notranslate">$config['previews_path'] = '/tmp/cache';</pre>
<p>Założenie katalogu <code>/cache</code> i nadanie mu praw do zapisu, a następnie zmiana powyższej zmiennej nie spowoduje poprawnego dostępu do plików CSS. Jest to bowiem związane z tym, że wykorzystywana w wielu miejscach CMSa ścieżka jest zapisana w pliku <code>fileloc.php</code> oraz niestety &#8222;na twardo&#8221; w innych.</p>
<p><strong>UWAGA:</strong> wszelkie opisane poniżej zmiany ingerują bezpośrednio w kod CMS Made Simple. W takim wypadku tracimy możliwość oficjalnego supprotu oraz utrudniamy sobie aktualizacje. Musimy pamiętać, że po jej wykonaniu będziemy musieli ponownie wprowadzić nasze poprawki.</p>
<p>W linii nr 3 w pliku <code>fileloc.php</code>  znajduje się następująca definicja:</p>
<pre class="brush: php; light: true; title: ; notranslate">define(&quot;TMP_CACHE_LOCATION&quot;, dirname(__FILE__) . DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR . 'cache');</pre>
<p>Wystarczy więc wpisać tu swoją własną ścieżkę, czyli w naszym przypadku <code>/cache</code>:</p>
<pre class="brush: php; light: true; title: ; notranslate">define(&quot;TMP_CACHE_LOCATION&quot;, dirname(__FILE__) . DIRECTORY_SEPARATOR . 'cache');</pre>
<p>Po tej zmianie pliki CSS będą zapisywane w nowej lokacji, jednak niestety CMS będzie ich nadal szukał w poprzedniej. Cóż, jest to ewidentny błąd programistów, którzy „na twardo: wpisali ścieżkę, zamiast skorzystać z odpowiedniej zmiennej konfiguracyjnej. Musimy więc zająć się plikiem <code>/plugins/function.cms_stylesheet.php</code> i odnaleźć odpowiedniwpis (linie 117 i 121 lub w ich pobliżu). Najlepiej w nich po prostu podać swoje ścieżki do katalogu, w którym zapisywane są obecnie pliki CSS. Poniższe linie:</p>
<pre class="brush: php; light: true; title: ; notranslate">
$stylesheet .= '&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;' . $root_url . '/tmp/cache/' . $filename . '&quot;/&gt;' . &quot;\n&quot;;

$stylesheet .= '&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;' . $root_url . '/tmp/cache/' . $filename.'&quot; media=&quot;' . $media_type.'&quot;/&gt;'.&quot;\n&quot;;
</pre>
<p>należy więc zamienić na</p>
<pre class="brush: php; light: true; title: ; notranslate">
$stylesheet .= '&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;' . $root_url . $config['previews_path'] . '/' . $filename.'&quot; media=&quot;' . $media_type . '&quot;/&gt;' . &quot;\n&quot;;

$stylesheet .= '&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;' . $root_url . $config['previews_path'] . '/' . $filename . '&quot;/&gt;' . &quot;\n&quot;;
</pre>
<p>W ten sposób problem z dostępem do CSS zostanie rozwiązany i arkusze stylów będą mogły być wczytane przez naszą stronę.</p>
<h3>Problem z pluginami, np. Captcha 0.4.5</h3>
<p>Część dodatków pisanych do CMS Made Simple przez zewnętrznych programistów zawiera podobny do opisanego powyżej błąd. Niestety, ale ścieżki dostępu do katalogów cache zostały w nich zapisane &#8222;na twardo&#8221;, a nie z wykorzystaniem zmiennej konfiguracyjnej. Musimy być zatem czujni i gdy występuje problem z dostępem do tworzonych plików, przeglądać ich kod.</p>
<p>Przykładowo występuje on we wtyczce Captcha (w momencie pisania artykułu w wersji 0.4.5), z której korzysta między innymi doskonałe rozszerzenie Form Builider. Zapisuje ona wygenerowane do przepisania przez użytkownika obrazki w katalogu <code>/tmp/cache</code>, jednak na stronie nie jest możliwe ich poprawne wyświetlenie.</p>
<p>Rozwiązanie jest proste, czyli poprawienie odpowiedniej linijki w pliku wtyczki <code>modules/Captcha/lib/classes/class.captchalib.php</code> w liniach 81 oraz 82 (lub pobliskich). W następującym kodzie:</p>
<pre class="brush: php; light: true; title: ; notranslate">
$this-&gt;setImagePath(cms_join_path($this-&gt;cmsconfig['root_path'],'tmp','cache'));
$this-&gt;setImageUrl($this-&gt;cmsconfig['root_url'] . '/tmp/cache');
</pre>
<p>musimy podać swój katalog, czyli <code>/cache</code>:</p>
<pre class="brush: php; light: true; title: ; notranslate">
$this-&gt;setImagePath(cms_join_path($this-&gt;cmsconfig['root_path'],'cache'));
$this-&gt;setImageUrl($this-&gt;cmsconfig['root_url'] . '/cache');
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.visionsoftware.pl/programowanie-php/cms-made-simple-na-home-pl-a-dostep-do-tmpcache.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
