[en] Installing SilverStripe on IIS server

UPDATE 2009-02-17: As Sigurd from SilverStripe team states in a comment, You shouldn’t need to follow my „howto” – at least if You’re using IIS 7. Since I wrote this „howto”, SilverStripe website has been improved to include installation instructions on IIS so please give it a try before proceeding with my old instructions.

1. Install ISAPI/Rewrite. I have no idea how to do it since it was already installed at my provider’s server, but there probably is a limited free version that is enough.
2. Download SilverStripe archive and extract it to Your server.
3. Go to Your server’s URL and fill in installer details as usual.
4. After rewritetest fails, create httpd.ini file in SilverStripe root directory and make its contents like that (what it basically does with ISAPI/Rewrite is to mimic Apache’s mod_rewrite):

[ISAPI_Rewrite] RewriteEngine On

RewriteCond URL (?!.*gif|.*jpg|.*png|.*swf|.*xml|.*css|.*flv|.*js|.*php).*
RewriteCond URL (?!.*\?).*
RewriteRule (.*) /sapphire/main.php\?url=$1 [I,L]

RewriteCond URL (?!.*gif|.*jpg|.*png|.*swf|.*xml|.*css|.*flv|.*js|.*php).*
RewriteCond URL .*\?.*
RewriteRule (.*)\?(.*) /sapphire/main.php\?url=$1&$2 [I,L]

5. Click „click here to proceed anyway” link and You should be redirected to an ugly looking „successfully installed” page.
6. Now edit /sapphire/core/control/Director.php file and change

$s = (isset($_SERVER[‚SSL’]) || isset($_SERVER[‚HTTPS’])) ? ‚s’ : ”;

line to

$s = (isset($_SERVER[‚SSL’]) || (isset($_SERVER[‚HTTPS’]) && $_SERVER[‚HTTPS’] == ‚on’)) ? ‚s’ : ”;

7. Refresh the „successfully installed” page and if it looks pretty now, You know You correctly did step 6.
8. Click „Click here to delete the install files.” link so You don’t have a security hole.
9. Now edit /sapphire/main.php file and at the very beginning add these lines:

if (!isset($_SERVER[‚REQUEST_URI’])) {
$_SERVER[‚REQUEST_URI’] = $_SERVER[‚SCRIPT_NAME’];
}

10. Following are hacks I needed to add so i18n works on IIS. If You don’t use i18n, You’ll probably be fine without these hacks. This method is in sapphire/core/i18n.php file:

protected static function get_owner_module($name) {
if (substr($name,-3) == ‚.ss’) {
global $_TEMPLATE_MANIFEST;
$path = current($_TEMPLATE_MANIFEST[substr($name,0,-3)]);
// hacks for IIS start –>
$path = str_replace(‚\sapphire/..’, ”, $path);
$path = str_replace(‚C:’, ”, $path);
$path = str_replace(‚\’, ‚/’, $path);
$bf = Director::baseFolder();
$bf = str_replace(‚C:’, ”, $bf);
$bf = str_replace(‚\’, ‚/’, $bf);
// <-- end hacks
ereg($bf . ‚/([^/]+)/’,$path,$module);
} else {
global $_CLASS_MANIFEST;
$path = $_CLASS_MANIFEST[$name];
// hacks for IIS start –>
$path = str_replace(‚\sapphire/..’, ”, $path);
$path = str_replace(‚C:’, ”, $path);
$path = str_replace(‚\’, ‚/’, $path);
$bf = Director::baseFolder();
$bf = str_replace(‚C:’, ”, $bf);
$bf = str_replace(‚\’, ‚/’, $bf);
// <-- end hacks
ereg($bf . ‚/([^/]+)/’,$path,$module);
}
return $module[1];
}

11. Enjoy 🙂
12. If You can’t enjoy for some reason, try checking out this thread at SilverStripe forum where most of the above info is found.

Duży może bardziej… olewać

Merlin to duży sklep, ale to nie oznacza, że jest przyjazny dla użytkowników. – napisała Shrew.

I ma rację. Im większy sklep tym większa szansa że klient zostanie kompletnie olany.

Moje ostatnie doświadczenie z Comarchem – potężna firma, popularna marka CDN. Ale ich sklep internetowy to istne kuriozum:

  1. Mimo iż wersję demo oprogramowania można pobrać z internetu, zakupioną wersję pełną można otrzymać tylko strajkującą Pocztą Polską.
  2. Brak możliwości płacenia online lub kartą kredytową, tylko przelewem bankowym.
  3. 7-dniowy okres realizacji zamówienia wydaje się sam w sobie dość długi jak na internetowy zakup oprogramowania, dopóki nie przejdzie się do punktu następnego.
  4. Oprogramowanie zamówione 3 czerwca, przelew puszczony tegoż samego dnia. Potwierdzenie zamówienia przychodzi na e-mail z informacją że zamówienie „czeka na potwierdzenie sklepu”. I tak wisi do dziś. 10 czerwca wysyłam e-maila z przypomnieniem że czekam na zamówienie. W końcu nie wytrzymuję.
  5. Dzwonię na nr telefonu podany w regulaminie sklepu. Pani po drugiej stronie drutu nie ma pojęcia o co ją pytam. „Jaki sklep internetowy?”(!) Okazuje się, że dodzwoniłem się do sekretariatu, pani próbuje przełączyć mnie do działu handlowego, ale nikogo tam nie ma. Próbuję kilku różnych numerów telefonu ze stron Comarchu, nie zapłaciłem może dużo, ale chciałbym chociaż odzyskać pieniądze. Nikt nie wie co mi powiedzieć, zanim trafiam do działu marketingu (a po drodze nawet z rzecznikiem prasowym rozmawiałem) nikt nawet nie kojarzy że w ogóle Comarch ma jakiś sklep internetowy 🙂

Update

Minął weekend po moich telefonach i zamówiony pakiet dotarł. Gdyby nie zgrzyt ze sklepem internetowym, byłbym pewnie zadowolony w 100% 😉 No ale przynajmniej usłyszałem „przepraszamy”.

Java: jak zrobić BufferedImage z grafiki SVG

SVG to przyjemny, otwarty format grafiki wektorowej. Aby go wykorzystać w Javie, potrzebna będzie biblioteka Batik. Żeby łatwo uzyskać BufferedImage zamiast zapisywać wyrenderowane SVG do pliku, skorzystamy z klasy której kod znajduje się na jednej z list dyskusyjnych.

Powyższe rozwiązanie można wygooglać, lecz oto moja wartość dodana 🙂 Minimalna lista plików .jar z Batika, które trzeba dodać do projektu by SVGRenderer działał prawidłowo:

  • batik-anim.jar
  • batik-awt-util.jar
  • batik-bridge.jar
  • batik-css.jar
  • batik-dom.jar
  • batik-ext.jar
  • batik-gvt.jar
  • batik-parser.jar
  • batik-rasterizer.jar
  • batik-script.jar
  • batik-svg-dom.jar
  • batik-transcoder.jar
  • batik-util.jar
  • batik-xml.jar
  • batik.jar
  • xerces_2_5_0.jar
  • xml-apis-ext.jar