Amennyire cross-platform és web-fejlesztő barát rendszer az OSX annyira vicces, hogy az Apple mindig meg tudja lepni a nagyérdeműt azzal, hogy ha nem azt az utat választod amit ő kijelölt akkor bizony coki neked. Nos, ez most akkor is így történt, amikor az ő útját akarod járni, csak valami kimaradt a számításból.
Köztudott, hogy a OSX egy BSD alapokra épült oprendszer és nem meglepő, hogy alapesetben is egy kattintással be tudjuk kapcsolni a saját, külön bejáratú apache (webszerver) -ünket.
Ha valakinek kedve támad HTML-eket szerkeszteni, akkor nincs más dolgunk mint a Home:Sites alatt nekiállni faragni a HTML-eket és a CSS-eket. Ez remek, különösen, ha WEB-es feladatok megoldásával foglalatoskodunk.
Ma úgy hozta a sors, hogy Amon ex-kollega által készített XML parsherre épülő PHP-ját local-ban kívántam futtatni, mert a fejlesztő kollegák nem értek rá ilyen csip-csup ügyekkel foglalatoskodni.
Azt köztudott, hogy a OSX alatti Apache-ban a PHP sebezhetőségi és erőforrásgazdálkodási okokból ki van kapcsolva és ez már csak advanced felhasználóknak ajánlott manőver.
PHP 5 modul engedélyezése
A httpd.conf-ban (/etc/apache2/httpd.conf) egy kommentezett sort kell keresnünk és ki kell vennünk az elejéről #-karaktert.
Ezt kell keressük:
#LoadModule php5_module libexec/apache2/libphp5.so
Erre kell cseréljük:
LoadModule php5_module libexec/apache2/libphp5.so
Ehhez nyitunk kell egy Terminal programot, majd a következőket tenni, miután persze tisztában vagyunk a Mac root jelszavával:
- sudo nano /etc/apache2/httpd.conf
- [Ctrl-W]-megnyomás (=keresés) php5 [Enter]
- sor elejéről a #-törlése
- [Ctrl-X] majd [Y]
Ezzel a modult az apache majd jól be fogja húzni - gondoljuk mi - egy újraindítással. Az újraindítás megtehető a System Preferences/Sharing/WEB alól.
Vagy egy alább látható terminal paranccsal:
sudo apachectl restart
Jó esetben nem ezt a hibaüzenetet kapjuk:
/usr/sbin/apachectl: line 82: ulimit: open files: cannot modify limit: Invalid argument
De ha mégis, akkor haladjunk tovább a faragás útján.
php5 működésre bírása - /apachectl: ulimit: open files: cannot modify [fix]
Nos, Kövi-vel fejtegetve a világegyetemet és persze a net segítségével szerencsére lett egy fix a probléma megoldására. A lényeg kb. annyi hogy az átültetett Apache config-file-ban az ulimit rendszermodul paraméterezése nem megfelelő. Ennek az lehet az oka, hogy a Apple BSD igen specifikus, és valszínüleg az Apple mérnökei számára ez így egyszerűbb - azaz valamit nagyon elkezdtek dinamikusan állítgatni ezen a szinten.
A probléma már az apachectl futtatásakor is előkerül, mert az hibára fut. Ahogy a fix-ből is kiderül, szerencsére csak az ulimit paraméterezésével van az usr/sbin/apachectl -ben és ismét egy sort kell cserélnünk, mégpedig ezt:
Erre:ULIMIT_MAX_FILES="ulimit -S -n `ulimit -H -n
ULIMIT_MAX_FILES=""
Nyilván ehhez is root jog kell, és kb. úgy kell eljárnunk mint ahogy azt fentebb is írtam - persze a módosítás előtt csinálunk egy másolatot az apachectl-ről, biztos ami ziher.
Ha mindent jól csináltunk akkor a terminálban az alábbi parancs már hibátlanul le kell fusson és a sor végén listázódnia kellene a php5 modulnak is:
sudo apachectl -M
Szóval egészségünkre és hajjrá PHP!
Amik még segíthetnek:
PHP professional portal
developer.apple.com
Blog of Cris Oliver