Како да удомите php.net на свом лаптопу?

По занимању нисам програмер, нити сам експерт за PHP, али уз помоћ документације и логике свашта може да се направи :) Повремено ми затреба упутство за утврђивање синтаксе неке наредбе и слично, а недавно ми је затребала документација са могућношћу претраге и док немам приступ нету.

Тада ми је на памет пала „луда“ идеја да спакујем ПХП упутство на лаптоп, а пошто ме вечерас @zsteva подсети на тај подухват, ево једноставног упутства како се то може урадити.

Напомена: Да не бих измишљао „топлу воду“, превешћу упутство које је написао Jaisen Mathai.

Концепт

Најбоље решење за добијање функционалне копије php.net је да се направи огледало (енг. mirror). На тај начин се добија комплетно ажурно упутство са додатним могућностима, које се по жељи могу уклонити. Пратићемо званично упутство за прављење php.net огледала, намењено људима који желе да направе огледало комплетног веб места, али није оптимизовано за оне који желе само локалну копију документације.

Поред лаптопа (или десктоп рачунара) биће нам потребни функционалан Apache веб сервер и алат за синхронизацију садржаја rsync. И, наравно, препоручујем неку ГНУ/Линукс дистрибуцију ;)

Подешавање rsync-а

Синтакса команде rsyncу поменутом упутству је једноставна, али ћемо ми направити неке измене. Направићемо shell скрипту која ће лако ажурирати потребне датотеке. У текстуалну датотеку са називом php-net-mirror.sh упишите следећи садржај:
#!/bin/sh
rsync -avzC --timeout=600 --delete --delete-after \
--include="manual/en/" --include="manual/en/**" \
--exclude="manual/**" --exclude="distributions/manual/**" \
--exclude="distributions/**" \
rsync.php.net::phpweb /путања/до/пхп/документације

Приметићете да смо додали изузеће директоријума distributions/** са његовим садржајем. Ово из разлога што не желимо да чекамо на преузимање преко десет различитих пакета са изворним кôдом. Обратите пажњу и на део /путања/до/пхп/документације уместо кога теба ставити апсолутну путању до кореног директоријума који ће садржати огледало php.net. Ја сам направио /var/www/vhost/phpweb, али Ви можете изабрати било који други за који имате дозволу да пишете у њега. Касније ћемо га користити у подешавању Apache виртуелног хоста.

Сачувајте измењену датотеку и ископирајте је (или је преместите) у директоријум /usr/bin, а потом јој доделите извршне дозволе наредбом:
sudo chmod u+x /usr/bin/php-net-mirror.sh

Напомена: Ако користите Виндоуз, онда можете користити cwRsync.

Како би могли да приступате документацији на свом рачунару, морате изабрати домен. Ја сам изабрао php тако да брзо у веб прегледачу могу да укуцам php/switch и видим документацију функције switch. Ви можете изабрати шта год Вам је воља, само изабрани домен морате додати у датотеку hosts (која се на ГНУ/Линукс системима налази на путањи /etc/hosts):
127.0.0.1 php

Завршни корак је покретање ове скрипте. Када је покренете у терминалу, видећете комплетан списак датотека које ће бити преузете. Касније ажурирање ће трајати много краће од првог преузимања, јер ће се преузимати само измењене датотеке.

Подешавање сервера Apache

Направите нови Apache виртуални хост користећи следеће податке:

<VirtualHost *:80>
     <Directory "/путања/до/пхп/документације">
          # Не приказивати листинг директоријума ако не постоји индекс,
          # и не уклапати називе датотека ако се изостави наставак
          Options -Indexes -MultiViews
     </Directory>
 
     ServerName php
     ServerAdmin адреса@е-поште.рс
 
     # корени веб директоријум огледала
     DocumentRoot /путања/до/пхп/документације
 
     # бележење рада сервера
     ErrorLog /путања/до/пхп/документације/logs/error_log
     TransferLog /путања/до/пхп/документације/logs/access_log
 
     # постављање индекса директоријума
     DirectoryIndex index.php index.html
 
     # прихватање гершака локалним скриптама за прихватање грешака
     ErrorDocument 401 /error.php
     ErrorDocument 403 /error.php
     ErrorDocument 404 /error.php
 
     # додавање врста које нису обухваћене подразумеваним поставкама
     AddType application/octet-stream .chm .bz2 .tgz .msi
     AddType application/x-pilot .prc .pdb 
 
     # постављање подразумеваног језика огледала
     SetEnv MIRROR_LANGUAGE "en"
 
     # искључивање правописне провере (која онемогућује скраћене адресе)
     <IfModule mod_speling.c>
       CheckSpelling Off
     </IfModule>
</VirtualHost>

Уместо горе наведених /путања/до/пхп/документације треба да упишете корени директоријум који сте изабрали приликом подешавања скрипте php-net-mirror.sh (у мом примеру /var/www/vhost/phpweb). У линији 8 за ServerName треба да упишете домен који сте раније изабрали, а преко кога ћете приступати документацији у веб прегледачу.

Покрените огледало документације

То би било то. Извршите наредбу коју користите за рестартовање Apache сервера. Ако користите Дебиан, онда покрените:
/etc/init.d/apache2 restart

Додатне напомене

Уколико уместо странице коју сте таржили добијете поруку о грешци налик на:

Not Found

The manual page you are looking for (http://php/manual/en/control-structures.switch.php) is not available on this server right now. Please check back later, or if the problem persist, contact the webmasters.

врло вероватно је на Вашој машини активна документација за Apache којој се приступа на адреси http://localhost/manual па је потребно променити алиас те документације на нешто друго. Ја користим једноставно man — у датотеци /etc/apache2/conf.d/apache2-doc (важи за Дебиан) прву линију треба изменити тако да уместо
Alias /manual /usr/share/doc/apache2-doc/manual/
буде
Alias /man /usr/share/doc/apache2-doc/manual/
и на даље Apache документацији можете приступати на адреси http://localhost/man (или другом алијасу који сте горе изабрали).

Аутоматизација ажурирања

Ако желите да имате ажурну документацију, уместо ручног покретања скрипте, ажурире можете аутоматизовати тако што у crontab додате следеће:

* 1 * * *	/usr/bin/php-net-mirror.sh

На овај начин се сваке ноћи у 1 сат после поноћи покреће ажурирање ПХП документације (наравно, ако је рачунар укључен).

Објављено од стране

Александар

Самостални веб програмер. Дугогодишње искуство у развоју веб софтвера коришћењем WordPress, PHP, jQuery, HTML5, CSS3 (SASS/LESS).

5 мишљења на „Како да удомите php.net на свом лаптопу?“

  1. Зашто би преузимао документацију са rsync када је комплетна документација већ доступна за преузимање?

    http://php.net/download-docs.php

    Препоручио бих chm пошто је практичнији за чување, све је у једној датотеци.

    Ако имаш неки квалитетнији читач chm датотека је индексирана и претрага је врло једноставна, такође могуће је претраживање по насловима.

    Ако не желиш да се бакћеш са chm преузми gz архиву са појединачним html датотекама, или преузми архиву са једном огромном html датотеком.

  2. @pedja: Где се може наћи ажурно упутство у ПДФ?

    @Мирко: Е, ту долазимо до „намћорлука“ или „ставова“ — CHM је власнички формат Мајкрософта. Ја се трудим да што мање М$ производа користим, посебно ако постоји алтернатива.

    Шта је проблем са обичном HTML верзијом? Није тако једноставна за употребу као копија (и CHM, такође), она састављена из појединачних страница је нешто тежа за навигацију, док ми је ~40 MB у једној датотеци „мало много“ за приручник.

    Не кажем да не може, али ми је овако „природније“ ;)

    @nenadsky: Кад већ гигабајти празног простора на диску скупљају прашину… ;)

  3. Izvinjavam se, moja greska za pdf, ali u svakom slucaju je bolje chm resenje od html i ovog koje si naveo u tekstu. Kao sto vec i sam video chm je kompaktniji i ima ugradjenu pretragu. Ne postoji neko razumno opravdanje da se koristi html verzija ili da se deo sajt sa dokumentacijom skida, prvo sto upada u oci je kolicina skinutih podataka, a samim tim i utroseno vreme na skidanje. Nema ovo mnogo veze sa namcorlukom ili stavom, jednostavno budi praktican. Nema tu puno emocija, to je jedan fajl.

Оставите одговор

Ваша адреса е-поште неће бити објављена. Неопходна поља су означена *