Kako da udomite php.net na svom laptopu?
Ako Vam je ikada zatrebala dokumentacija za PHP sa mogućnošću pretrage u trenutku kada nemate pristup Internetu, onda je rešenje tog problema pravljenje lokalne kopije dokumentacije na računaru. Sledite ovo jednostavno uputstvo i više nećete imati takvih problema
Po zanimanju nisam programer, niti sam ekspert za PHP, ali uz pomoć dokumentacije i logike svašta može da se napravi
Povremeno mi zatreba uputstvo za utvrđivanje sintakse neke naredbe i slično, a nedavno mi je zatrebala dokumentacija sa mogućnošću pretrage i dok nemam pristup netu.
Tada mi je na pamet pala „luda“ ideja da spakujem PHP uputstvo na laptop, a pošto me večeras @zsteva podseti na taj poduhvat, evo jednostavnog uputstva kako se to može uraditi.
Napomena: Da ne bih izmišljao „toplu vodu“, prevešću uputstvo koje je napisao Jaisen Mathai.
Koncept
Najbolje rešenje za dobijanje funkcionalne kopije php.net je da se napravi ogledalo (eng. mirror). Na taj način se dobija kompletno ažurno uputstvo sa dodatnim mogućnostima, koje se po želji mogu ukloniti. Pratićemo zvanično uputstvo za pravljenje php.net ogledala, namenjeno ljudima koji žele da naprave ogledalo kompletnog veb mesta, ali nije optimizovano za one koji žele samo lokalnu kopiju dokumentacije.
Pored laptopa (ili desktop računara) biće nam potrebni funkcionalan Apache veb server i alat za sinhronizaciju sadržaja rsync. I, naravno, preporučujem neku GNU/Linuks distribuciju
Podešavanje rsync-a
Sintaksa komande rsyncu pomenutom uputstvu je jednostavna, ali ćemo mi napraviti neke izmene. Napravićemo shell skriptu koja će lako ažurirati potrebne datoteke. U tekstualnu datoteku sa nazivom php-net-mirror.sh upišite sledeći sadržaj:
#!/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 /putanja/do/php/dokumentacije
Primetićete da smo dodali izuzeće direktorijuma distributions/** sa njegovim sadržajem. Ovo iz razloga što ne želimo da čekamo na preuzimanje preko deset različitih paketa sa izvornim kôdom. Obratite pažnju i na deo /putanja/do/php/dokumentacije umesto koga teba staviti apsolutnu putanju do korenog direktorijuma koji će sadržati ogledalo php.net. Ja sam napravio /var/www/vhost/phpweb, ali Vi možete izabrati bilo koji drugi za koji imate dozvolu da pišete u njega. Kasnije ćemo ga koristiti u podešavanju Apache virtuelnog hosta.
Sačuvajte izmenjenu datoteku i iskopirajte je (ili je premestite) u direktorijum /usr/bin, a potom joj dodelite izvršne dozvole naredbom:
sudo chmod u+x /usr/bin/php-net-mirror.sh
Napomena: Ako koristite Vindouz, onda možete koristiti cwRsync.
Kako bi mogli da pristupate dokumentaciji na svom računaru, morate izabrati domen. Ja sam izabrao php tako da brzo u veb pregledaču mogu da ukucam php/switch i vidim dokumentaciju funkcije switch. Vi možete izabrati šta god Vam je volja, samo izabrani domen morate dodati u datoteku hosts (koja se na GNU/Linuks sistemima nalazi na putanji /etc/hosts):
127.0.0.1 php
Završni korak je pokretanje ove skripte. Kada je pokrenete u terminalu, videćete kompletan spisak datoteka koje će biti preuzete. Kasnije ažuriranje će trajati mnogo kraće od prvog preuzimanja, jer će se preuzimati samo izmenjene datoteke.
Podešavanje servera Apache
Napravite novi Apache virtualni host koristeći sledeće podatke:
<VirtualHost *:80>
<Directory "/putanja/do/php/dokumentacije">
# Ne prikazivati listing direktorijuma ako ne postoji indeks,
# i ne uklapati nazive datoteka ako se izostavi nastavak
Options -Indexes -MultiViews
</Directory>
ServerName php
ServerAdmin adresa@e-pošte.rs
# koreni veb direktorijum ogledala
DocumentRoot /putanja/do/php/dokumentacije
# beleženje rada servera
ErrorLog /putanja/do/php/dokumentacije/logs/error_log
TransferLog /putanja/do/php/dokumentacije/logs/access_log
# postavljanje indeksa direktorijuma
DirectoryIndex index.php index.html
# prihvatanje geršaka lokalnim skriptama za prihvatanje grešaka
ErrorDocument 401 /error.php
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
# dodavanje vrsta koje nisu obuhvaćene podrazumevanim postavkama
AddType application/octet-stream .chm .bz2 .tgz .msi
AddType application/x-pilot .prc .pdb
# postavljanje podrazumevanog jezika ogledala
SetEnv MIRROR_LANGUAGE "en"
# isključivanje pravopisne provere (koja onemogućuje skraćene adrese)
<IfModule mod_speling.c>
CheckSpelling Off
</IfModule>
</VirtualHost>
Umesto gore navedenih /putanja/do/php/dokumentacije treba da upišete koreni direktorijum koji ste izabrali prilikom podešavanja skripte php-net-mirror.sh (u mom primeru /var/www/vhost/phpweb). U liniji 8 za ServerName treba da upišete domen koji ste ranije izabrali, a preko koga ćete pristupati dokumentaciji u veb pregledaču.
Pokrenite ogledalo dokumentacije
To bi bilo to. Izvršite naredbu koju koristite za restartovanje Apache servera. Ako koristite Debian, onda pokrenite:
/etc/init.d/apache2 restart
Dodatne napomene
Ukoliko umesto stranice koju ste taržili dobijete poruku o grešci nalik na:
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.
vrlo verovatno je na Vašoj mašini aktivna dokumentacija za Apache kojoj se pristupa na adresi http://localhost/manual pa je potrebno promeniti alias te dokumentacije na nešto drugo. Ja koristim jednostavno man — u datoteci /etc/apache2/conf.d/apache2-doc (važi za Debian) prvu liniju treba izmeniti tako da umesto
Alias /manual /usr/share/doc/apache2-doc/manual/
bude
Alias /man /usr/share/doc/apache2-doc/manual/
i na dalje Apache dokumentaciji možete pristupati na adresi http://localhost/man (ili drugom alijasu koji ste gore izabrali).
Automatizacija ažuriranja
Ako želite da imate ažurnu dokumentaciju, umesto ručnog pokretanja skripte, ažurire možete automatizovati tako što u crontab dodate sledeće:
* 1 * * * /usr/bin/php-net-mirror.sh
Na ovaj način se svake noći u 1 sat posle ponoći pokreće ažuriranje PHP dokumentacije (naravno, ako je računar uključen).












5 komentara na „Kako da udomite php.net na svom laptopu?“
20. novembar 2009. u 00:46
zar nije lakse skinuti pdf/chm/html manual sa php sajta. jedina stvar koja fali su komentari. Na zalost vise ne postoji Extended verzija koja je imala i to.
20. novembar 2009. u 00:51
Zašto bi preuzimao dokumentaciju sa rsync kada je kompletna dokumentacija već dostupna za preuzimanje?
http://php.net/download-docs.php
Preporučio bih chm pošto je praktičniji za čuvanje, sve je u jednoj datoteci.
Ako imaš neki kvalitetniji čitač chm datoteka je indeksirana i pretraga je vrlo jednostavna, takođe moguće je pretraživanje po naslovima.
Ako ne želiš da se bakćeš sa chm preuzmi gz arhivu sa pojedinačnim html datotekama, ili preuzmi arhivu sa jednom ogromnom html datotekom.
20. novembar 2009. u 03:18
nije na odmet da se i ovo uradi
20. novembar 2009. u 07:08
@pedja: Gde se može naći ažurno uputstvo u PDF?
@Mirko: E, tu dolazimo do „namćorluka“ ili „stavova“ — CHM je vlasnički format Majkrosofta. Ja se trudim da što manje M$ proizvoda koristim, posebno ako postoji alternativa.
Šta je problem sa običnom HTML verzijom? Nije tako jednostavna za upotrebu kao kopija (i CHM, takođe), ona sastavljena iz pojedinačnih stranica je nešto teža za navigaciju, dok mi je ~40 MB u jednoj datoteci „malo mnogo“ za priručnik.
Ne kažem da ne može, ali mi je ovako „prirodnije“
@nenadsky: Kad već gigabajti praznog prostora na disku skupljaju prašinu…
20. novembar 2009. u 07:18
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.