התקנת וורדפרס בעברית על IIS 7

התקנת אתר PHP על שרת IIS של חלונות היה דמיוני עוד לפני כמה שנים. לא הייתה הפצה איכותית של PHP לחלונות, ביצועי CGI של IIS נעו בין רע לבלתי נסבל, ולשים ISAPI ל"שיפור ביצועים" היה מתכון לקריסות קבועות. לשמחת רבים, מיקרוסופט הבינו שהתועלת מ-PHP תהיה גבוהה לאין שיעור מההשקעה הדרושה כדי להעמיד תמיכה ראויה לפלטפורמה. מיקרוסופט שכרו כמה מפתחי PHP בולטים, ותוך שנתיים קיבלנו גירסה יציבה עם ביצועים סבירים. במקביל IIS עבר מהפכה בין גירסא 6 ל-7, הפך למודולרי ומקבל הרחבות חדשות על בסיס קבוע. הבסיס לעבודה מול PHP הוא הוספת תמיכה בפרוטוקול ה-FastCGI, שהפעם מומש כדי שישתמשו בו ולא כדי לצאת מידי חובה. יש גם מנגנון מטמון לשיפור הביצועים, אם רוצים.

התקנתי כבר לפני מעל לשנה את phpBB, ולפני כמה חודשים גם את MediaWiki. רוב הבעיות בתפעול נבעו מ"אבטחת יתר", כמו הרשאות קריאה חלקיות, איסור הרצה של סקריפטים, פורטים שאינם ברירת מחדל ב-MySQL ועוד פרמטרים ב-php.ini שחסמו כל מיני דברים. בהתקנת וורדפרס, כמובן חזרתי על אותם הטעויות ובהיתי בלוגים שעה כדי להיזכר להיות יותר נדיב בהרשאות ריצה. אלמלא טעות טפשית זאת, ההתקנה הייתה באמת פחות מחצי שעה. אבל למה שהכל יהיה באמת פשוט? הכל עבד פרט לקישורים בעברית.

על שכתוב הלינקים ב-IIS אחראי התוסף URL Rewrite Module שיצא לא מזמן בגירסה 2. עליו נפלה האשמה הראשונית, אחרי חיפושים נרחבים מצאתי פוסט שהסביר שבגירסה הראשונה היה באג עם שכתוב תווים שאינם ASCII ויצא תיקון. אבל התיקון לא תואם לגירסה החדשה שאמורה לכלול אותו ממילא. בלי הסבר מה באמת היה מקור הבאג, או מה התיקון החלטתי לשנות בקוד של וורדפרס את פיענוח הכתובת לפי המלצה של משתמש קוריאני. זה לא עזר כי הכל היה מקונפג ל-UTF-8 כבר מההתחלה. אחרי עוד חיפושים מצאתי שבגירסת תוסף השכתוב האחרונה יש גישה למידע הבקשה לפני כל העיבודים וההמרות. זה גם לא עזר כי לשם שינוי בתוספי IIS הם לא פגעו בתוכן העברי. אם כל מה שעושה השכתוב לא פוגע בעברית, צריך להעביר את האשם הלאה.

הבא בתור זה וורדפרס עצמו. כל קריאות iconv ו-urlde/encode שהעליתי בדעתי לא הזיזו. קישורים בעברית כן עובדים על Apache ולא מצאתי בוורדפרס שום קוד שיכול לקלקל עברית! החלטתי שעוד נסיון אחרון ואני זונח את כל הקישורים היפים ושגוגל יעשה מה שבא לו. ידעתי שוורדפרס קיבל תמיכת שכתוב על IIS בגירסה 2.8, אולי אז מישהו שם לב באותה תקופה. עוד סבב חיפושים הביא אותי לדף שהסביר איך מקנפגים את השכתוב עבור וורדפרס שזכרתי כבר בעל פה. בתוך רצף התגובות סוף סוף הבעיה אוזכרה! הפתרון שהוצע היה הבקשה הלא מעובדת שניסיתי מקודם, והסבר כי הכל נובע מבאג בתוסף ה-FastCGI שמעביר את כל משתני השרת ב-ASCII בלבד. מצאתי עדכון לתוסף ואכן ברשימת התיקונים הופיע "העברת משתני שרת ב-UTF-8". השמחה לא נמשכה הרבה כי גיליתי שהעדכון כבר מותקן אצלי.

עברתי על ההגדרות של תוסף ה-FastCGI ולא היה שום אזכור איך התיקון החמקמק עובד. מהחיפושים הקודמים מי המפתח האחראי במיקרוסופט על התוסף, ולשמחתי בבלוג שלו היה הסבר נרחב על התיקון והוראות שימוש! ההוראות אומנם היו עבור IIS 6, אבל זה אותו התיקון ולא ראיתי סיבה למה שלא יעבוד. פתיחת שורת פקודה והקלדת שורת הקסם:

reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\w3svc\Parameters /v FastCGIUtf8ServerVariables /t REG_MULTI_SZ /d REQUEST_URI\0PATH_INFO

איתחול IIS עם iisreset וזהו, המסע הסתיים – וורדפרס מותקן ויש קישורים בעברית.

הפוסט הזה פורסם בתאריך כללי עם התגים , , . קישור קבוע.

כתיבת תגובה

האימייל שלך לא יוצג בבלוג. (*) שדות חובה מסומנים

*

תגי HTML מותרים: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>