Zana za kufanya kazi na faili za .ini za programu za wavuti

Ifuatayo tutasakinisha PHP na kusanidi seva ya wavuti ili kuitumia. Fungua kumbukumbu ya zip (php-5.2.9-Win32.zip) kwenye folda inayokufaa (bora zaidi katika C:\php 5; nitafuata katika makala ambayo upakuaji ulifanyika hapa, kwa hivyo ikiwa unayo PHP mahali pengine. , basi, ipasavyo, endelea kutumia saraka yako). Nenda kwenye folda hii na ubadilishe jina la faili ya php.ini-dist kuwa php.ini. Fungua faili hii na notepad au kihariri chochote cha maandishi. Nadhani mipangilio chaguo-msingi ni nzuri ya kutosha, unahitaji tu kurekebisha maagizo machache. Kwanza unahitaji kuchagua eneo kwenye diski ambapo nyaraka za seva zitahifadhiwa, yaani, faili za HTML, PHP, nk. Katika makala iliyotangulia, kuhusu kufunga Apache, tulichagua saraka ya C:\www\htdocs. Kisha tunahitaji kusahihisha maagizo katika faili ya php.ini

Doc_root =

Doc_root = "C:\www\htdocs"

Pia hakikisha umerekebisha extension_dir na

Extension_dir = "./"

;kiendelezi=php_mysql.dll ;extension=php_mysqli.dll

Ikiwa unapanga kutumia moduli zingine, basi zitoe maoni pia. Hapa kuna orodha ya moduli kuu:

;extension=php_bz2.dll - kwa kufanya kazi na kumbukumbu za bz2 (kufungua/kupakia kwa kutumia maandishi) ;extension=php_curl.dll ni kiendelezi cha curl; ukitumia unaweza, kwa mfano, kutuma ombi la POST kutoka kwa hati hadi hati nyingine; extension=php_exif.dll - kwa kufanya kazi na maelezo ya ziada katika faili za picha; extension=php_gd2.dll - maktaba ya picha ya kuzalisha picha kwa hati; extension= php_mbstring.dll - hii ni maktaba ya kufanya kazi na nyuzi za baiti nyingi (Unicode), nakushauri sana uiunganishe, vinginevyo CMS fulani inaweza isifanye kazi; extension=php_msql.dll - kwa kufanya kazi na hifadhidata ya mSQL; extension=php_mssql .dll - kwa kufanya kazi na Seva ya Microsoft SQL; extension=php_mysql.dll - maktaba ya kawaida ya MySQL; kwa matoleo ya MySQL 5 na zaidi, ni bora kutumia moduli ya mysqli; extension=php_mysqli.dll - maktaba iliyoboreshwa (MySQL Imeboreshwa) kwa kufanya kazi na MySQL. Ili kufanya kazi na MySQL5, ni bora kuitumia; extension=php_pdo.dll - moduli hii, pamoja na moduli zote za PDO, hutoa kiolesura cha umoja kwa hifadhidata nyingi. Lakini haswa, hii ni muhimu kwa sababu hii ni (kama nijuavyo, angalau kutoka kwa zile za kawaida) njia pekee ya kufanya kazi na hifadhidata za SQLite 3; extension=php_pgsql.dll - kwa kufanya kazi na PostgreSQL DBMS; extension=php_sockets .dll - moduli ya kufanya kazi na soketi kutoka kwa maandishi, extension=php_sqlite.dll - kwa kufanya kazi na hifadhidata ya SQLite isiyo na seva. Moduli hii inaauni toleo la 2 pekee la faili za hifadhidata; extension=php_zip.dll - kwa kufanya kazi na kumbukumbu za zip (sawa na bz2)

Unaweza kutoa maoni mara moja moduli kadhaa zinazotumiwa mara kwa mara.

Extension=php_gd2.dll extension=php_mbstring.dll

Hii inakamilisha kuhariri php.ini (usisahau kuhifadhi mabadiliko!). Sasa kutoka kwa saraka ya C:\php5 hadi saraka ya C:\WINNT\System32, nakili faili ya libmysql.dll. Inahitajika kwa PHP kufanya kazi na MySQL. Au ongeza njia iliyotenganishwa na semicoloni C:\php5 kwa utofauti wa njia - Sifa za Mfumo -> Kina -> Vigeu vya Mazingira -> Njia. Ili mabadiliko yaanze kutumika katika kesi hii, unahitaji kuanzisha upya kompyuta.

Nenda kwenye katalogi C:\faili za programu\Apache2.2\conf na ufungue faili ya httpd.conf katika kihariri cha maandishi.

Wacha tuachane na mistari iliyoongezwa katika nakala iliyotangulia:

LoadModule php5_module "c:/php/php5apache2_2.dll" PHPIniDir "C:/WINNT"

Hiyo ni, seva ya wavuti na PHP zimesanidiwa kufanya kazi pamoja. Hakikisha umeanzisha upya seva yako ya wavuti kufanya PHP kufanya kazi! Ili kufanya hivyo, tumia Apache Monitor (ikoni ya kalamu na mshale wa kijani kwenye tray ya mfumo)

Uwezekano mkubwa zaidi, unapofanya kazi na hati, utahitaji kubadilisha mipangilio ifuatayo katika php.ini:

1. Wakati wa kusakinisha hati, wakati mwingine hitilafu ifuatayo inaonekana:

Hitilafu mbaya: Muda wa juu zaidi wa utekelezaji wa sekunde 30 umezidishwa katika C:\blablabla\file.php kwenye mstari wa 360

Unaweza kurekebisha hii kwa kubadilisha max_execution_time katika php.ini

Max_execution_time = 60; Muda wa juu zaidi wa utekelezaji wa kila hati, kwa sekunde

kwa thamani ya juu

Max_execution_time = 180

2. Ikiwa faili kubwa zitapakiwa kwa njia ya script, kwa mfano, faili za sauti na video, basi unahitaji kuongeza thamani ya parameter. upload_max_filesize hadi saizi yako ya faili iliyopangwa

; Upeo wa ukubwa unaoruhusiwa kwa faili zilizopakiwa. upload_max_filesize = 100M

Katika makala hii tutaangalia kufunga na kusanidi seva ya Wavuti Apache, PHP 5 Na DBMS ya MySQL kuzitumia kwenye mashine ya ndani chini ya mfumo wa uendeshaji wa Windows (2000 na XP). Kutumia seva za ndani kunaweza kuhitajika kwa sababu nyingi - unahitaji kujifunza PHP au MySQL, na kujaribu programu zako za Wavuti kwenye kupangisha ni ghali au haiwezekani kabisa. Katika kesi hii, utahitaji Apache+PHP+MySQL kwenye mashine yako ya ndani.

Kwanza unahitaji kupata usambazaji wa seva za Apache na MySQL, pamoja na kumbukumbu ya PHP. Tutakuwa tunasakinisha na kusanidi Apache 2, MySQL 4 na PHP 5.

Unaweza pia kupakua faili za php.ini za kusanidi PHP na httpd.conf kwa Apache kutoka kwa wavuti yetu. Walakini, fanya hivi kama suluhu la mwisho - ikiwa hakuna kitu kilikufaulu na faili za "asili" ambazo zilionekana wakati wa kusanikisha programu. Lakini kwa hali yoyote, watahitaji kusanidiwa kwa mashine maalum. Pakua php.ini na httpd.conf

Unaweza kupakua Apache kutoka kwa vioo vilivyotolewa kwenye tovuti rasmi http://www.apache.org/dyn/closer.cgi. Unapotafuta, kumbuka kuwa Apache pia inaweza kuitwa httpd, baada ya jina la daemon yake katika UNIX. Vioo kawaida huwa na faili nyingi tofauti, kwa mfano:
httpd-2.0.49-win32-src.zip ni kumbukumbu iliyo na misimbo ya chanzo (src) ya Windows (win32) ya seva ya Wavuti ya Apache (httpd) toleo la 2.0.49.
httpd-2.0.49.tar.gz ni sawa, lakini kwa Linux, ambayo programu kawaida husambazwa katika msimbo wa chanzo.
apache_2.0.50-win32-x86-no_ssl.exe - na hapa kuna seva ya Apache (apache) toleo la 2.0.50 lililokusanywa kwa usanifu (x86) kwa Windows (win32) bila msaada wa SSL (no_ssl) - hii ndio unayohitaji.

Maoni

Misimbo ya binary ya usambazaji wa Apache inasambazwa katika matoleo kadhaa, na viendelezi vya *.exe na *.msi na yana jina kama httpd_version_win32_*_.msi.

Ili sio lazima uteseke, hapa kuna rasilimali ambapo unaweza kuipata: http://apache.rinet.ru/dist/httpd/binaries/win32/
Nambari ya pili na ya tatu katika toleo inaweza kutofautiana na yale yaliyotolewa hapa - unapaswa kuchagua toleo la hivi karibuni, kwani huondoa makosa yaliyopatikana katika matoleo ya awali.

PHP 5 inaweza kupakuliwa kutoka sehemu ya tovuti yetu.

Usambazaji wa MySQL unaweza kupakuliwa kutoka kwa wavuti yetu.

Mwongozo kamili wa kumbukumbu katika Kirusi unaweza kupatikana.

Mara tu tunapohifadhi usambazaji wote muhimu, tunaweza kuanza usakinishaji. Agizo ambalo Apache, PHP na MySQL zimewekwa haijalishi. Wacha tuanze na seva ya Wavuti ya Apache.

Inasakinisha Apache Web Server

Endesha kisakinishi cha Apache Web Server. Matokeo yake yatakuwa dirisha na makubaliano ya leseni, baada ya kukubali ambayo unapaswa kuhamia dirisha linalofuata na maelezo mafupi kuhusu ubunifu katika toleo la pili la Apache. Dirisha linalofuata, lililoonyeshwa kwenye takwimu, hukuruhusu kuingiza habari kuhusu seva: jina la kikoa cha seva, jina la seva Na anwani ya barua pepe ya admin. Ikiwa ufungaji unafanyika kwenye mashine ya ndani, basi katika mashamba ya jina la kikoa na jina la seva unapaswa kuingia mwenyeji(tazama picha.). Chini ya dirisha unaulizwa kuchagua nambari ya bandari ambayo seva itakubali maombi (80 au 8080).


mwenyeji ni jina la kutumia seva kwenye mashine ya ndani, ambayo inahusishwa na anwani ya IP 127.0.0.1, ambayo imehifadhiwa kwa matumizi ya ndani.

Baada ya hayo, njia ya ufungaji itapendekezwa: kawaida ( Kawaida) au kuchagua ( Desturi), ambayo hukuruhusu kuchagua vifaa vya seva kwa mikono. Dirisha linalofuata linakuwezesha kuchagua saraka ya usakinishaji wa seva, kwa chaguo-msingi ni C:Program FilesApache Group, lakini tunapendekeza kuchagua saraka tofauti, kwa mfano, C:www. Baada ya hayo, mchawi wa ufungaji utakujulisha kuwa iko tayari kwa mchakato wa ufungaji na baada ya kubofya kifungo Sakinisha, faili za seva zitanakiliwa. Ikiwa usakinishaji ulifanikiwa, Windows itazindua kiotomati Apache.

Baada ya usakinishaji uliofaulu, unapoandika http://localhost/ au http://127.0.0.1/ kwenye dirisha la kivinjari, ukurasa wa seva unapaswa kupakiwa.

Sasa unahitaji kujifunza jinsi ya kusimamia Apache, yaani, kujifunza jinsi ya kuanza, kuacha na kuanzisha upya seva. Kuna njia nyingi za kutekeleza shughuli hizi: kutumia huduma ya ApacheMonitor, kwa kutumia console ya usimamizi wa huduma za Windows, kwa kutumia vitu vya orodha ya Mwanzo, kutoka kwa mstari wa amri ... Tutaangalia console ya usimamizi wa huduma za Windows, ambayo inakuwezesha kusanidi Apache. kuanza kiotomatiki mfumo unapoanza. Ili kuzindua koni ya usimamizi, endesha amri
Anza-> Mipangilio-> Paneli ya Kudhibiti-> Utawala->Huduma.
Katika dirisha la console inayoonekana, katika takwimu hapa chini, chagua huduma ya Apache2. Menyu ya muktadha, ambayo inafungua kwa kubofya kifungo cha kulia, inakuwezesha kuanza, kuacha na kuanzisha upya huduma.


Huduma za Windows hukuruhusu kuzindua programu za nyuma wakati mfumo unapoanza. Ili kufanya hivyo, nenda kwenye dirisha la Mali kwa kuchagua kipengee kwenye menyu ya muktadha wa huduma Mali na kwenye dirisha linaloonekana kwenye orodha ya kushuka " Aina ya kuanza"chagua kipengee" Otomatiki".

Inasanidi Apache

Seva ya wavuti ni bidhaa changamano ya programu inayoendeshwa kwenye majukwaa tofauti na mifumo ya uendeshaji kote ulimwenguni. Kwa hiyo, ili ifanye kazi kwa usahihi kwenye mfumo uliowekwa, lazima ipangiwe.
Kwa chaguo-msingi, mipangilio ya Apache iko kwenye faili ya httpd.conf kwenye saraka ya conf. Yafuatayo yataelezea maagizo makuu ya faili ya httpd.conf na maana zao zinazotumiwa kwa kawaida.

Njia za faili

Katika faili za usanidi wa Apache na PHP, mara nyingi utalazimika kutaja njia za saraka na folda tofauti. Mifumo ya uendeshaji ya UNIX na Windows hutumia vitenganishi tofauti vya saraka. UNIX hutumia kufyeka mbele "/", kwa mfano /usr/bin/perl, ilhali Windows hutumia kikwazo, kwa mfano c:Apachein. Kwa ujumla, katika baadhi ya maagizo ya Apache na PHP aina zote mbili za vitenganishi vya saraka hufanya kazi: mbele (/) na nyuma (), lakini kwa kuwa Apache na PHP zote zilitengenezwa kwa UNIX, kwa kutumia umbizo lao "asili", unaweza kuzuia idadi ya matatizo. Kwa hiyo, inashauriwa kuandika njia katika faili za usanidi (httpd.conf na php.ini) kwa kutumia slash katika muundo wa UNIX - "/". Kwa mfano:

ScriptAlias ​​​​"/php_dir/" "c:/php/"

httpd.conf maagizo ya faili

Bandari

Bandari ya 80

Huweka mlango wa TCP ambao Apache hutumia kuanzisha muunganisho. Kwa chaguo-msingi, bandari 80 hutumiwa.

Kumbuka

Sababu pekee ya kutumia bandari isiyo ya kawaida ni ikiwa huna haki za kutumia mlango wa kawaida. Unapotumia bandari isiyo ya kawaida, kwa mfano, 8080, nambari ya bandari inapaswa kutajwa katika anwani, kwa mfano: http://localhost:8080/.

Utawala wa Seva

Utawala wa Seva [barua pepe imelindwa]

Ina anwani ya barua pepe ya msimamizi wa seva ya wavuti, ambayo itaonyeshwa katika kesi ya hitilafu za seva.

Jina la seva

Jina la seva myserver

Ina jina la kompyuta kwa seva.

ServerRoot

ServerRoot "C:/Apache2"

Inaelekeza kwenye saraka iliyo na faili za seva ya Apache WEB.

Kumbuka

Usichanganye maagizo ya ServerRoot na maagizo ya DocumentRoot, ambayo hubainisha saraka ya faili za tovuti ya WEB.

DocumentRoot

DocumentRoot "C:/Apache2/htdocs"

Inafafanua saraka ambayo faili za tovuti ya WEB ziko.

Chombo

Upeo wa maagizo ndani ya kontena hili unaenea hadi faili zote na saraka ndogo ndani ya DocumentRoot.


Chaguzi FollowSymLinks Inajumuisha Faharasa
Ruhusu Batilisha Zote

  • Maagizo ya AllowOverride yaliyowekwa kuwa Yote hukuruhusu kubatilisha thamani za faili kuu ya usanidi ya httpd.conf katika faili za .htaccess.
  • Maagizo ya Options FollowSymLinks huruhusu Apache kufuata viungo vya ishara.
  • Chaguo Inajumuisha maagizo huruhusu utekelezaji wa maagizo ya SSI (Upande wa Seva Unajumuisha) katika kanuni za kurasa za tovuti.
  • Maagizo ya Fahirisi za Chaguo hubainisha kuwa yaliyomo kwenye saraka yanapaswa kurejeshwa ikiwa faili ya faharasa haipo.

DirectoryIndex

DirectoryIndex index.html index.phtml index.php

Ina orodha ya faili za faharasa zinazopaswa kuonyeshwa wakati wa kufikia saraka bila kubainisha jina la faili (kwa mfano, http://localhost/test/).

AddDefaultCharset

AddDefaultCharset windows-1251

Huweka usimbaji chaguomsingi ikiwa hakuna usimbaji uliowekwa kwenye kichwa cha hati ya HTML. Unaweza pia kuhitaji kutaja thamani ya usimbaji ya KOI8-R.

Kuunda wapangishi pepe

Unaweza kusakinisha tovuti kadhaa za WEB kwenye seva moja ya Apache WEB. Kipengele hiki cha seva kinaitwa mwenyeji wa kawaida. Hapo chini tutaangalia kuunda nodi za kawaida kulingana na majina. Wapangishi pepe kwa kawaida huwa mwisho wa faili ya httpd.conf.

Kwanza unahitaji kutaja ni anwani gani ya IP inayotumika kwa wapangishaji pepe.



# Maagizo ya mwenyeji halisi

httpd.conf faili. Chombo


ServerAdmin webmaster@may_domain.ru
DocumentRoot c:/www/mysite
Jina la seva www.mysite.ru
ServerAlias ​​www.site.ru www.host2.ru
ErrorLog logs/mysite-error.log
CustomLog logs/mysite-access.log common

Wacha tuangalie maagizo ya nodi halisi:

  • DocumentRoot inaonyesha saraka ambapo faili (kurasa) za nodi hii pepe (tovuti ya WEB) ziko.
  • ServerName inabainisha jina la seva pangishi pepe ambayo inaweza kufikiwa nayo. Katika kesi hii, katika http://www.mysite.ru/.
  • ServerAlias ​​​​ina lakabu za jina la mwenyeji pepe. Katika kesi hii, unaweza pia kufikia mwenyeji wa kawaida kwa kutumia majina: http://www.site.ru/ na http://www.host2.ru/.
  • ErrorLog na CustomLog hubainisha majina ya kumbukumbu ya seva kwa seva pangishi hii pepe.

Vyombo kawaida huwekwa moja baada ya nyingine mwishoni mwa faili ya httpd.conf.

httpd.conf faili. Kuweka wapangishi pepe

JinaVirtualHost 127.0.0.1:80

# Maagizo ya mwenyeji 1


# Maagizo ya mwenyeji wa kweli 2


# Maagizo ya mwenyeji halisi 3

Kumbuka

Apache lazima iwashwe upya ili mabadiliko yaliyofanywa kwenye faili ya httpd.conf yaanze kutumika.

Ili kufikia seva pangishi kwa majina, lazima wasajiliwe katika hifadhidata ya seva ya DNS. Ikiwa unatumia Apache kujaribu faili kwenye mashine ya ndani, basi majina ya nodi zako pepe yanapaswa kuandikwa kwenye faili ya mwenyeji. Kwa Windows 2000 na XP, iko katika saraka ya C:WindowSystem32Driversets. Faili ya majeshi ina maingizo kama:

Umbizo la Kuingiza Faili la Wapangishi

127.0.0.1 www.mysite.ru
127.0.0.1 www.site.ru
127.0.0.1 www.host2.ru

Kufunga na kusanidi PHP

Ili kusakinisha PHP, unapaswa kuunda saraka c:/php na uweke faili kutoka kwa hifadhi ya zip ya usambazaji ndani yake. Baada ya hayo, unapaswa kubadilisha jina la faili ya usanidi php.ini-dist hadi php.ini na kuinakili kwenye saraka ya Windows.

Inasakinisha PHP kama moduli

Kusakinisha PHP kama moduli huboresha utendaji kazi kidogo kwa sababu moduli ya PHP hupakiwa mara moja seva ya Wavuti inapoanza

Maoni

Wakati wa kusakinisha PHP kama moduli, mipangilio kutoka php.ini inasomwa mara moja wakati seva ya Wavuti inapoanza. Kwa hiyo, unapofanya mabadiliko kwa php.ini, lazima uanze upya Apache ili mabadiliko yaanze.

Ili kusakinisha PHP, fungua faili kuu ya usanidi ya Apache httpd.conf kwa kuhariri na uondoe wahusika wa maoni kutoka kwa mistari ifuatayo, ukibadilisha ikiwa ni lazima:

httpd.conf faili. Kuunganisha PHP kama moduli ya Apache


LoadModule php5_module c:/php/php5apache2.dll

Kumbuka

Kufunga PHP kama Programu ya CGI

Wakati wa kusakinisha PHP kama programu ya CGI, mkalimani wa PHP atapakiwa kila wakati hati ya PHP inapoitwa. Kutokana na hili, kunaweza kuwa na kuzorota kwa utendaji. Ikiwa PHP imewekwa kama CGI, basi Apache haipaswi kuanza tena wakati wa kufanya mabadiliko kwenye faili ya php.ini, kwani mipangilio inasomwa kila wakati hati ya PHP inatekelezwa. Kusakinisha PHP kama CGI hufanya mabadiliko kwenye usanidi wa PHP haraka zaidi, kwani hauhitaji kuanzisha tena seva ya WEB.

Kumbuka

Wakati wa kusakinisha PHP kama CGI, baadhi ya vichwa vitaacha kufanya kazi; kwa mfano, hutaweza kuidhinisha watumiaji kutumia PHP. Uidhinishaji unaweza tu kutekelezwa kwa kutumia Apache yenyewe kwa kutumia faili za .htaccess.

Ili kusakinisha PHP, fungua faili kuu ya usanidi httpd.conf kwa uhariri, pata mistari ya muunganisho wa PHP iliyotolewa maoni ndani yake na uibadilishe kama ifuatavyo:

httpd.conf faili. Kuunganisha PHP kama CGI

Programu ya AddType/x-httpd-php phtml php

ChaguziExecCGI

ScriptAlias ​​​​"/php_dir/" "c:/php/"
Utumizi wa kitendo/x-httpd-php "/php_dir/php-cgi.exe"

Kumbuka

Badala ya saraka ya c:/php, badilisha saraka yako na PHP iliyosanikishwa.

Inasanidi PHP (faili ya php.ini)

Kwa kuwa utakuwa na shughuli nyingi katika kujaribu programu zako za Wavuti kwenye mashine yako ya karibu, unahitaji kusanidi vizuri faili ya usanidi ya php.ini. Pata maelekezo ya makosa_ya kuripoti na uiweke kwa thamani ifuatayo:

Thamani hii itasanidi PHP ili wakati wa kuendesha hati za PHP, makosa yote yataonyeshwa, na "maoni" yatapuuzwa. Unahitaji pia kuhakikisha kuwa maagizo ya display_errors yamewezeshwa:

Display_errors = Imewashwa

Ikiwa maagizo haya yamezimwa (Imezimwa), basi ujumbe wa hitilafu hautaonyeshwa kwenye dirisha la kivinjari na ikiwa hitilafu itatokea katika msimbo, utashangaa mbele ya dirisha nyeupe safi itamaanisha nini.
Inahitajika pia kuhakikisha kuwa maagizo_ya kutofautisha yana maana ifuatayo:

Variables_order = "EGPCS"

Barua hapa zinamaanisha yafuatayo:
E - vigezo vya mazingira
G - anuwai zinazopitishwa kwa kutumia njia ya GET (G)
P - vigezo vinavyohamishwa kupitia njia ya POST (P)
C - Vidakuzi
S - vikao
Kukosa herufi yoyote itakuzuia kufanya kazi na vigeu vinavyolingana.

Agizo linalofuata ambalo linaweza kuhitaji usanidi ni sajili_ulimwengu. Ikiwa agizo hili limewezeshwa

Register_globals = Imewashwa

basi vigeu vinavyotumwa na GET, POST, vidakuzi na vipindi vinaweza kutumika katika hati ya PHP, kuvifikia kama vigeu vya kawaida vya $someone.
Ikiwa agizo hili limezimwa

Register_globals = Imezimwa

basi vigeu hivyo vinaweza kupatikana tu kwa kutumia safu za superglobal ($_POST, $_GET, nk.).
Maelekezo sajili_safu_ndefu hukuruhusu kutumia safu kuu za ulimwengu katika umbizo la zamani ("ndefu" - $HTTP_GET_VARS, $HTTP_POST_VARS, n.k.)

Sajili_refu_safu = Imewashwa

Sasa unahitaji kusanidi faili ya index. Ukiandika laini http://localhost/ katika dirisha la kivinjari, na sio http://localhost/index.html. Seva bado itatoa index.html kwa kivinjari, kwa kuwa faili hii ni faili ya faharisi na hutafutwa kwanza kwenye saraka ikiwa faili mahususi haijabainishwa. Sasa unahitaji kusanidi http.conf ili seva ya Wavuti ya Apache ijibu faili za index.php kwa njia ile ile. Ili kufanya hivyo, pata maagizo ya DirectoryIndex katika http.conf na urekebishe kama ifuatavyo:

DirectoryIndex index.html index.html.var index.php

Baada ya hayo, unahitaji kuanzisha upya seva ya Apache, na uunde faili ya PHP ya majaribio (index.php) kwenye saraka ya mizizi ya seva pangishi pepe ("C:/www/scripts"):

phpinfo();
?>

Ikiwa usanidi umefanikiwa, kufikia http://localhost/index.php itaonyesha jedwali la zambarau na mipangilio ya sasa ya PHP, ambayo inarejeshwa na kazi ya phpinfo().
Kwa hivyo, tumesanidi mchanganyiko wa Apache na PHP na tunaweza kuendelea na kusanidi MySQL. Fungua usambazaji wa MySQL kwenye saraka ya muda na uendesha kisakinishi. Unaweza kudhibiti uendeshaji wa seva ya MySQL kwa njia sawa na Apache, kwa kutumia console ya usimamizi wa huduma za Windows.

Muunganisho wa MySQL

Mbinu ya kina ya kuunganisha kiendelezi cha MySQL kwa PHP imeelezewa katika makala kwenye kiungo: .

Ikiwa seva ya MySQL tayari imesakinishwa kwenye mashine yako, basi hatua inayofuata ni kusanidi PHP kufanya kazi na hifadhidata za MySQL.

Fungua faili ya php.ini kutoka kwa saraka ya Windows kwa uhariri. Ili kuunganisha maktaba ya ugani ya MySQL, unahitaji kuondoa herufi ya maoni (semicolon) kutoka kwa mstari:

Kiendelezi=php_mysql.dll

Pia angalia thamani ya maelekezo ya extension_dir

Extension_dir="c:/php-5.0/ext"

Inapaswa kuelekeza kwenye saraka ambapo viendelezi vya PHP vimehifadhiwa. Inashauriwa kuandika vitenganishi vya saraka katika muundo wa UNIX (/) - backslash. Hata hivyo, ikiwa yote mengine hayatafaulu, rudisha tu thamani ya maelekezo ya extension_dir na unakili maktaba ya php_mysql.dll kwenye mzizi wa C:/php-5.0/ - katika hali nyingi hii inapaswa kusaidia.

Ikiwa PHP imeunganishwa kwako kama moduli, basi unahitaji pia kunakili maktaba ya libmysql.dll kutoka kwenye saraka na PHP iliyosakinishwa kwenye saraka ya mfumo C:/Windows/System32. Ili mabadiliko yaanze kutumika, anzisha tena Apache.

Ili kuangalia kuwa MySQL inafanya kazi, anzisha tena seva ya Apache na uunde hati ya majaribio na nambari ifuatayo:

$dblocation = "127.0.0.1" ;
$dbname = "mtihani" ;
$dbuser = "mzizi" ;
$dbpasswd = "" ;

$dbcnx = @mysql_connect ($dblocation, $dbuser, $dbpasswd);
ikiwa (! $dbcnx)
{
mwangwi "

Kwa bahati mbaya, seva ya mySQL haipatikani

" ;
Utgång();
}
kama (!@
mysql_select_db ($dbname, $dbcnx))
{
mwangwi "

Kwa bahati mbaya, hifadhidata haipatikani

"
;
Utgång();
}
$ver = mysql_query("SELECT VERSION()" );
ikiwa(!$ver)
{
mwangwi "

Hitilafu katika ombi

"
;
Utgång();
}
mwangwi
mysql_result($ver, 0);
?>

Ikiwa MySQL imeunganishwa kwa mafanikio katika mchanganyiko wa Apache na PHP, kufikia hati ya majaribio kutaonyesha toleo la seva ya MySQL kwenye dirisha la kivinjari.

Katika matoleo mapya ya MySQL (kuanzia 4.1.0), njia ambayo seti za herufi za kitaifa zinashughulikiwa imebadilika, kwa hivyo msimbo wa zamani unaweza kusababisha alama za swali "???????" kuonekana kwenye jedwali la hifadhidata. badala ya maandishi ya Kirusi. Ili kuzuia hili kutokea mwanzoni mwa hati ya PHP, baada ya kuanzisha unganisho kwenye hifadhidata, unapaswa kuweka mistari ifuatayo:

mysql_query( "set character_set_client="cp1251"");
mysql_query( "set character_set_results="cp1251"");
mysql_query( "set collation_connection="cp1251_general_ci"");
?>

Inasakinisha viendelezi vya PHP

Mwishowe, unaweza kuhitaji kusanidi viendelezi vingine vya PHP; vimeundwa kwa njia sawa na MySQL.

Kwa hivyo, ili kuunganisha maktaba ya picha ya GDLib katika php.ini, unahitaji kufuta mstari:

Kiendelezi=php_gd2.dll

Baada ya hayo, angalia uwepo wa maktaba hii kwenye folda ya c:phpext. Baada ya kufanya mabadiliko kwa php.ini, fungua upya seva. Ili kuangalia kwa haraka ikiwa maktaba imeunganishwa, endesha kazi ya phpinfo(). Ikiwa kila kitu kiko sawa, basi kwenye jedwali linaloonyeshwa na phpinfo() kazi, sehemu " gd

Ikiwa unatumia jina la zamani la php.exe lililotumiwa katika matoleo ya awali badala ya php-cgi.exe, kosa linaweza pia kuonekana:

403 Haramu Huna ruhusa ya kufikia /__php_dir__/php.exe/test.php kwenye seva hii

Faili za HTML zinatekelezwa, lakini hati za PHP hazifanyiki

Ikiwa uunganisho wa PHP haujasanidiwa, wakati wa kufikia faili na ugani wa php, kwa mfano: http:/localohost/index.php, dirisha linafungua kwa ombi la kupakua faili hiyo. Hii inaonyesha kuwa usindikaji wa faili na kiendelezi cha php haujasanidiwa. Angalia faili ya httpd.conf kwa uwepo wa laini ifuatayo:

Programu ya AddType/x-httpd-php phtml php

Notisi: Tofauti isiyobainishwa...

Kwenye PHP mpya, iliyosakinishwa upya, mara nyingi unaweza kuona ujumbe kama:

Notisi: Tofauti isiyofafanuliwa: msg katika C:/Main/addrec.php kwenye mstari wa 7

Hitilafu_kuripoti = E_ALL & ~E_NOTICE

MySQL haitaunganishwa

Wakati mwingine kuna matatizo ya kufunga MySQL. Unapaswa kuangalia ikiwa MySQL inaanza kama huduma kila wakati mfumo unapoanza. Ili kufanya hivyo, fungua koni ya huduma:

Anza | Mpangilio | Paneli ya Kudhibiti | Utawala | Huduma

pata MySQL hapo - iendeshe. Ili kufanya seva ianze kila wakati buti za mfumo, bonyeza-kulia kwenye huduma na uchague "Sifa" - kwenye orodha ya kushuka ya "Aina ya Kuanzisha" inayofungua, chagua "Otomatiki".

Ikiwa, unapoanzisha Apache na kufikia hati, ujumbe unaonekana kuonyesha kwamba maktaba ya php_mysql.dll haiwezi kupakiwa.

Kuanzisha PHP: Haiwezi kupakia maktaba yenye nguvu c:/php/ext/php_mysql.dll
- moduli maalum haikupatikana

Kisha tena angalia maagizo kutoka kwa sehemu inayoelezea kuunganishwa kwa maktaba za PHP kwa kufanya kazi na MySQL. Je, unatumia toleo la "sahihi" la faili ya php_mysql.dll (haswa kwa toleo la PHP ambalo limewekwa kwenye mfumo)?
Matoleo ya faili ya php_mysql.dll hutofautiana kwa matoleo tofauti ya PHP, ingawa yana jina sawa.

  • Kutumia vitenganishi vya saraka ya Windows (backslash): c:apache/bin. Kwa operesheni inayotegemewa, unapaswa kutumia vikomo vya UNIX (kufyeka mbele), kwa mfano: c:/apache/bin.
  • Kuwepo kwa faili kadhaa za usanidi wa php.ini kwenye mashine, au kutokuwepo kwa faili hiyo. Faili inayohitajika ya php.ini inapaswa kuwa iko kwenye saraka ya Windows. Tafuta anatoa za kompyuta yako, pata matoleo yote yasiyo ya lazima ya faili na uwafute.
  • Unaweza kuuliza maswali yoyote ambayo unaweza kuwa nayo kuhusu kusakinisha mchanganyiko wa Apache+PHP+MySQL kwenye jukwaa letu lililojitolea kusakinisha na kusanidi Apache, PHP na maktaba ya viendelezi.


    Kiungo cha moja kwa moja: php-5.3.10-Win32-VC9-x86.zip
    Wakati huo huo, pakua mara moja nyaraka katika Kirusi katika muundo wa .chm, utahitajika wakati wa kujifunza na kufanya kazi: php_enhanced_ru.chm

    Fungua kumbukumbu kwenye saraka inayotaka (hapo awali "C:\php" inapendekezwa). Fungua faili ya usanidi iliyo na mipangilio iliyopendekezwa - "php.ini-maendeleo" (iko kwenye mizizi ya usambazaji), iite jina tena php.ini na ufanye mabadiliko yafuatayo.

    Kuhariri php.ini:

    1. Tafuta mstari:
      post_max_size = 8M
      Ongeza ukubwa wa juu zaidi wa data unaokubaliwa na mbinu ya POST hadi MB 16 kwa kuibadilisha kuwa:
      post_max_size = 16M
    2. Tafuta mstari:
      ;include_path = ".;c:\php\includes"
      Iondoe maoni kwa kuondoa semicolon kabla ya mstari.
      (Isipokuwa mwangalifu! Misuli nyuma wakati wa kubainisha njia):
      include_path = ".;c:\php\includes"
      Unda saraka tupu "C:\php\includes" kuhifadhi madarasa yaliyojumuishwa.
    3. Tafuta mstari:
      extension_dir = "./"
      Weka thamani ya maagizo haya kwa njia ya folda na viendelezi:
      extension_dir = "C:/php/ext"
    4. Tafuta mstari:
      ;pakia_tmp_dir =
      Iondoe maoni na ueleze njia ifuatayo katika thamani:
      upload_tmp_dir = "C:/php/pakia"
      Unda folda tupu "C:\php\pakia" ili kuhifadhi faili za muda zilizopakiwa kupitia HTTP.
    5. Tafuta mstari:
      upload_max_filesize = 2M
      Ongeza ukubwa wa juu unaoruhusiwa wa kupakia faili hadi MB 16:
      upload_max_filesize = 16M
    6. Unganisha, usitoe maoni, data ya maktaba ya kiendelezi:
      extension=php_bz2.dll
      extension=php_curl.dll
      extension=php_gd2.dll
      extension=php_mbstring.dll
      extension=php_mysql.dll
      extension=php_mysqli.dll
    7. Tafuta mstari:
      ;date.timezone=
      Toa maoni na uweke thamani kwa saa za eneo la eneo lako (orodha ya saa za eneo zinaweza kupatikana katika hati):
      date.timezone = "Ulaya/Moscow"
    8. Tafuta mstari:
      ;session.save_path = "/tmp"
      Toa maoni na uweke thamani ya agizo hili kwa njia ifuatayo:
      session.save_path = "C:/php/tmp"
      Unda folda tupu "C:\php\tmp" ili kuhifadhi faili za kikao cha muda.
    Hifadhi mabadiliko yako na funga faili ya php.ini.

    Ifuatayo, unahitaji kuongeza saraka na mkalimani wa PHP aliyesakinishwa kwenye NJIA ya mfumo wa uendeshaji. Ili kufanya hivyo, fuata njia "Anza" -> "Jopo la Kudhibiti" -> "Mfumo", fungua kichupo cha "Advanced", bonyeza kitufe cha "Vigezo vya Mazingira", katika sehemu ya "Vigezo vya Mfumo", bonyeza mara mbili kwenye "Vigezo vya Mazingira". Njia", ongeza "Thamani inayoweza kubadilika" kwenye shamba, kwa kile kilichopo tayari, njia ya saraka na PHP imewekwa, kwa mfano, "C: \ php" (bila quotes). Kumbuka kuwa herufi ya semicolon inatenganisha njia. Ili mabadiliko yaanze kutekelezwa, anzisha upya mfumo wako wa uendeshaji.

    Mfano wa Njia:
    %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\php;C:\Program Files\MySQL\MySQL Server 5.5\bin

    Usakinishaji na usanidi wa mkalimani wa PHP umekamilika.

    Maelezo ya maktaba zilizounganishwa:

    php_bz2.dll- Kwa kutumia kiendelezi hiki, PHP itaweza kuunda na kufungua kumbukumbu katika umbizo la bzip2.

    php_curl.dll- Maktaba muhimu sana na muhimu ambayo hukuruhusu kuunganishwa na kufanya kazi na seva kwa kutumia idadi kubwa ya itifaki za Mtandao.

    php_gd2.dll- Maktaba nyingine muhimu ambayo hukuruhusu kufanya kazi na picha. Je, ulifikiri unaweza kuzalisha kurasa za HTML katika PHP pekee? Lakini hapana! Ukiwa na PHP unaweza kufanya karibu kila kitu, pamoja na kuchora.

    php_mbstring.dll- Maktaba ina kazi za kufanya kazi na usimbaji wa baiti nyingi, ambazo ni pamoja na usimbuaji wa lugha za mashariki (Kijapani, Kichina, Kikorea), Unicode (UTF-8) na zingine.

    php_mysql.dll- Jina la maktaba linajieleza lenyewe - ni muhimu kufanya kazi na seva ya MySQL.

    php_mysqli.dll- Maktaba hii ni kiendelezi cha iliyotangulia na ina vitendaji vya ziada vya PHP vya kufanya kazi na toleo la 4.1.3 la seva ya MySQL na matoleo mapya zaidi.

    Maktaba hizi zinapaswa kutosha kwa PHP kufanya kazi vizuri. Kwa wakati, ikiwa hitaji litatokea, utaweza kuunganisha maktaba za ziada, lakini haifai kuziunganisha zote mara moja na wazo kwamba hautaharibu uji na siagi; katika kesi hii, idadi kubwa ya maktaba zilizounganishwa. inaweza kupunguza kasi ya PHP.

    «

    Ukiuliza programu ya mtandao ambayo faili zote katika usambazaji wa PHP ni muhimu zaidi, wengi wanaweza kujibu kwamba mkalimani yenyewe, maktaba, upanuzi, nk Hapana, faili muhimu zaidi ni php.ini: faili ndogo ya maandishi ambayo ina mipangilio yote ya PHP (maagizo), usanidi wa moduli za ugani na anuwai za mazingira. Kupitia faili ya usanidi, unaweza kusanidi PHP kwa utendaji wa hali ya juu, kuzima kazi na moduli zinazoweza kuwa hatari, na, kwa kweli, ikiwa usanidi haujafaulu, sumbua utendakazi wa mfumo mzima (hapana, sio seva nzima, haswa wavuti. seva na PHP).

    Lakini thamani ya vigezo vya mfumo inaweza kuweka si tu kwa njia ya php.ini, lakini pia kwa njia nyingine, pamoja na mapungufu. Ili kuelewa hili, tunapaswa kuzingatia kwa ufupi utaratibu wa usindikaji faili za usanidi na mazingira ya PHP.

    Kwanza, katika hali rahisi zaidi, wakati PHP inafanya kazi kama programu ya CGI, faili inasomwa tena kila wakati mkalimani anapozinduliwa. Ikiwa imeunganishwa kama moduli ya SAPI kwa seva ya Apache, basi njia ya faili imedhamiriwa na maagizo ya PHPIniDir ya usanidi wa seva.

    Ikiwa baada ya hii faili ya usanidi haipatikani, utafutaji wake unaendelea katika maeneo yafuatayo: kwa seva ya Win32, ufunguo wa Usajili HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath umeangaliwa, kisha faili hutafutwa kwenye saraka ya sasa kutoka ambapo mkalimani yuko. inayoendesha (php-cli.exe), kwenye saraka ya mizizi ya seva ya wavuti (kwa moduli ya SAPI) au kwenye saraka ya mizizi ya PHP. Kisha utafutaji unaendelea katika saraka za mfumo (C:\WINDOWS, C:\WINXP, C:\SYSTEM32) na katika saraka iliyoainishwa kwenye hatua ya kujenga PHP na chaguo "--with-config-file-path".

    Kwa kuongeza, chaguzi zenyewe zinaweza kubainishwa katika faili tofauti, kwa mfano katika faili za usanidi wa seva ya Apache (httpd.conf), katika faili za .htaccess (kwa saraka za tovuti za kibinafsi), katika faili tofauti za php.ini zilizowekwa kwenye saraka na hati, na hata kwenye hati za PHP zenyewe kwa kuita ini_set() kazi. Kulingana na wapi na jinsi utofauti umewekwa, itakuwa na athari tofauti - kwa hati ya sasa, kwa tovuti ya mtu binafsi au saraka, kwa seva nzima hadi iwashwe tena.

    Kwa nini utofauti huo? Rahisi sana. Kwa mfano, katika hali ya kawaida, wakati tovuti yako iko kwenye upangishaji ulioshirikiwa, huwezi kujipanga upya usanidi wa PHP, wakati huo huo, ili hati zifanye kazi kawaida, unahitaji kuweka vigeu kadhaa ambavyo vinatofautiana na. mipangilio ya mwenyeji. Kisha unaweka tu faili ya php.ini kwenye saraka za tovuti yako, ambayo unataja mipangilio yote unayohitaji. Ikiwa unahitaji kubadilisha kigeu kimoja au viwili tu, hii inaweza kufanywa kwa kupiga kazi ini_set() mwanzoni mwa hati. Lakini makini na jambo moja. Kwa kuwa ini_set() ni kazi ya PHP na, ipasavyo, inatekelezwa baada ya mkalimani kuanzishwa, mipangilio mingine itapuuzwa, kwani inaathiri kazi tu katika hatua ya awali ya kuanza kwa PHP. Usijali, vigezo vile, pamoja na makosa (syntactically) yasiyo sahihi, vitapuuzwa tu na haitasababisha matokeo yoyote katika kazi.

    Hebu tutoe mfano wa vitendo. Kuna mwongozo kuripoti_kosa, ambayo inaonyesha kiwango cha maelezo katika matokeo ya ujumbe wa makosa wakati wa tafsiri ya hati ya PHP. Inaweza kusanidiwa ili kuonyesha ujumbe wote na maonyo tu ambayo hayaathiri uendeshaji wa programu. Unaweza kujitengenezea upya, kwa mfano, kuruhusu tu makosa muhimu ya utekelezaji kuonyeshwa. Katika kesi hii, utofauti unapaswa kuwa na thamani "E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR" - yaani, makosa ya mkusanyaji wa maonyesho, mazingira muhimu na makosa ya kernel. Unaweza kuweka kutofautiana kwa kuita ini_set () kazi, ambayo inachukua vigezo viwili vya kamba: mstari wa kwanza unaelezea jina la chaguo, na mstari wa pili unaelezea thamani mpya. Kwa upande wetu ni: ini_set("kuripoti_kosa", "E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR");. Ni hayo tu, kwa sababu hiyo, PHP itatumia thamani mpya ya error_reporting variable kila wakati unapoendesha hati yako, huku kwa watumiaji wengine wote thamani chaguo-msingi iliyoelezwa katika php.ini itabaki.

    Kabla ya kuchukua nafasi ya kutofautiana kwa mazingira, inashauriwa kuangalia thamani yake ya sasa - hii inafanywa kwa kutumia simu ya kazi ini_get(), ambayo inachukua parameta moja, kamba yenye jina la kutofautiana, na kurudisha kamba na thamani yake ya sasa. Katika mfano wetu kanuni echo ini_get("error_reporting"); itarejesha E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR, yaani, thamani mpya iliyowekwa, kwa wakati mmoja, ikiwa tutaita ini_get() kabla ya kuweka thamani mpya, tutapata kitu kama E_ALL & ~E_NOTICE (huenda kikatofautiana kwenye wapangishaji tofauti) - onyesha ujumbe kuhusu makosa yote isipokuwa maonyo.

    Lakini, kabla ya kuweka vigezo, ni vyema kuzunguka muundo wa faili php.ini na katika chaguzi zinazopatikana. Kuna habari kidogo juu ya mada hii isipokuwa maoni katika php.ini yenyewe, kwa hivyo tutajaribu kuelezea kwa undani vigezo muhimu zaidi ambavyo utalazimika kushughulika nazo.

    Muundo wa jumla wa faili ya php.ini ni rahisi sana. Faili nzima imegawanywa katika sehemu, kila sehemu hugawanya vigezo vinavyohusiana na moduli fulani au mazingira yote ya PHP kwa ujumla. Katika kila sehemu, vigezo (maelekezo) vinatajwa katika fomu variable_name=thamani, Wapi maana inaweza kuwa kamba ya kiholela (ikiwa ina nafasi, imefungwa kwa nukuu mbili) au thamani. Washa zima(basi utofauti kama huo pia huitwa bendera). Vigezo vimeainishwa moja kwa kila mstari, na mistari yote inayoanza na " ; "Yanachukuliwa kama maoni na hayashughulikiwi. Kumbuka kwamba majina ya maagizo ni nyeti kwa herufi kubwa na mara nyingi huandikwa kwa herufi ndogo.

    Jina la sehemu limefungwa kwenye mabano ya mraba. Kwa mfano, sehemu ya kwanza ni sehemu ya mipangilio ya mazingira ya jumla -. Sehemu ya moduli ya ODBC ya mawasiliano na hifadhidata ina jina, mipangilio ya ufikiaji wa MySQL inafanywa katika sehemu hiyo, na kiolesura kipya cha MySQLI kimesanidiwa, vigezo vya kikao vimebainishwa katika sehemu hiyo. Kila sehemu, ukiondoa mfumo mzima, inalingana na ugani fulani, ikiwa, bila shaka, inahitaji kusanidiwa.

    Kwa sasa, hebu tuanze na maagizo yaliyoelezwa katika sehemu. Tutakuwa tukiangalia usanidi wa PHP toleo la 5.0.x, kwa hivyo ikiwa una toleo la awali, baadhi ya maagizo yanaweza kukosa.

    injini =- bendera ambayo inaruhusu PHP kufanya kazi kwenye seva ya Apache. Kwa chaguo-msingi huwa imewekwa kuwa Washa.

    zend.ze1_compatibility_mode =- maagizo yalionekana katika PHP 5.0 na hukuruhusu kubadili hali ya utangamano na hati zilizoandikwa kwa matoleo ya awali. Ikiwa unajifanyia PHP kukufaa na hauitaji kudumisha utangamano, weka bendera Zima, lakini ikiwa PHP imesanidiwa kwa seva iliyoshirikiwa, basi ni jambo la busara kuruhusu watumiaji kuendesha hati zote zilizoandikwa na msingi wa Zend I ( PHP 4.x) akilini.

    short_open_tag =- PHP inaweza kutambua vitambulisho kadhaa tofauti kwa mwanzo na mwisho wa kizuizi cha programu. Bendera hii inaruhusu matumizi ya nukuu fupi kama.

    usahihi =- hubainisha ni tarakimu ngapi muhimu PHP inapaswa kuzingatia wakati wa kufanya kazi na nambari za sehemu. Chaguo-msingi ni herufi 12, ambayo inatosha kabisa.

    output_buffering =— huwezesha uakibishaji towe kwa kurasa zote au kuweka saizi ya bafa katika baiti (ikiwa thamani ni nambari kamili, kwa mfano 4096, huweka saizi ya bafa hadi KB 4). Hutumika kwa kuakibisha vichwa na vidakuzi vya HTTP kwa muda kabla ya kutuma maudhui mengine kwa mteja.

    output_handler =- Inakuruhusu kubainisha chaguo za kukokotoa ili kuelekeza upya towe zote za ukurasa. Wakati huo huo, ikiwa chaguo la kukokotoa limebainishwa, maagizo ya output_buffering yanawezeshwa. Inaweza kutumika kwa upitishaji wa maandishi ya maudhui, ukandamizaji, akiba au uchakataji mwingine wa baada ya usindikaji. Ikiwa maagizo hayatumiki, yape thamani tupu (kamba tupu au hakuna thamani).

    hali_salama =- hubadilisha PHP kwa hali maalum ya uendeshaji iliyohifadhiwa, ambayo imeongeza usalama, lakini pia inaweka vikwazo kwenye programu. Inaweza kuwa muhimu sana wakati wa kuunda mifumo na usalama ulioongezeka. Maagizo haya yanahusishwa na mengine kadhaa yenye majina yanayoanza na safe_mode_, ambayo huweka vikwazo maalum na ukaguzi wa ziada. Kwa chaguo-msingi, maagizo yamewekwa kuwa Zima.

    Disable_functions =- inabainisha orodha ya vipengele ambavyo matumizi yake ni marufuku katika hati za mtumiaji. Inaweza kutumika kutoa usalama wa ziada kwa kuzuia vipengele vinavyoweza kuwa hatari (kwa mfano, simu za mfumo). Ili kubainisha chaguo za kukokotoa, ziorodheshe katika nukuu mbili zilizotenganishwa na koma. Kwa mfano, "exec,php_info,file,ini_set" inakataza simu kwa exec(), php_info(), file(), ini_set() vitendaji. Lakini agizo hili linaweza kusanikishwa tu kabla Uanzishaji wa PHP, yaani, katika faili ya php.ini au httpd.conf.

    max_execution_time =- inaonyesha wakati katika sekunde wakati hati moja inaweza kutekelezwa. Ikiwa kikomo kimepitwa, utekelezaji wa hati unalazimika kukomesha kwa hitilafu. Hii inaweza kuwa muhimu kwa kulazimisha kusimamisha programu zilizoandikwa vibaya ambazo zitaingilia utendakazi wa kawaida wa seva. Wakati huo huo, hupaswi kuweka muda mfupi sana, kwa kuwa ikiwa unafanya kazi na majeshi ya mbali, hifadhidata au faili, muda uliowekwa unaweza kumalizika kabla ya script kukimbia.

    max_input_time = [-1/jumla]— hubainisha muda katika sekunde ambapo hati inaweza kutoa data. Inashauriwa usiiweke chini ya max_execution_time maagizo. Ikiwa maandishi yanatoa data kwa nguvu, kwa mfano, huchakata kitu kwenye kitanzi na kuonyesha vipande vikubwa vya maandishi, basi maagizo yanapaswa kupewa maadili makubwa au hayakuwekwa kabisa - basi kizuizi pekee kitakuwa wakati wa utekelezaji wa jumla. hati. Maagizo yanaweza tu kusakinishwa kupitia php.ini.

    memory_limit =- huweka saizi ya RAM iliyotengwa kwa hati moja. Kiambishi awali M kinaonyesha kuwa saizi iko katika megabytes, na K - KB. Kwa seva ya umma (kwa mfano, mwenyeji wa pamoja), unaweza kuweka thamani ya chini, lakini ikiwa unahitaji kufanya mahesabu ya kina au kupanga mpango wa kuendesha programu kubwa za kibiashara, thamani inaweza kuongezeka (kulingana na ukubwa wa RAM kwenye seva. )

    display_errors =- inaruhusu mtumiaji kuonyesha ujumbe kuhusu makosa ya wakati wa kukimbia na maonyo ya PHP. Ningependekeza kila wakati kuwezesha agizo hili sio tu katika hali ya kurekebisha, lakini pia katika kazi halisi, na kurekebisha kwa usahihi maelezo ya pato kwa kutumia chaguo la makosa_ya kuripoti.

    error_reporting = [seti ya viunga vilivyoainishwa awali]- inaonyesha maelezo ya taka ya ujumbe kuhusu makosa na kushindwa katika mkalimani.

    Mara kwa mara inaweza kuunganishwa kwa kutumia waendeshaji wa kuongeza kidogo. Vigezo muhimu zaidi ni: E_ALL (makosa na maonyo yote), E_COMPILE_ERROR (makosa mabaya ya mkusanyaji), E_CORE_ERROR (makosa mabaya wakati wa uanzishaji wa kernel ya PHP), E_ERROR (makosa mabaya ya wakati wa kukimbia), E_PARSE (makosa ya kisintaksia), E_NOTICE na E_WARNING (maonyo ya wakati wa kukimbia). ).utekelezaji ambao sio muhimu kwa utendakazi wa hati).

    Ili kurekebisha hati, inashauriwa kuweka maelezo ya juu zaidi ya ujumbe, kwa mfano error_reporting = E_ALL, katika operesheni halisi ni kuhitajika kuwatenga maonyo ambayo hayaathiri uendeshaji, k.m. error_reporting = E_COMPILE_ERROR|E_CORE_ERROR|E_ERROR itaonyesha makosa mabaya tu (chaguo lingine: error_reporting = E_ALL & ~E_NOTICE & ~ E_WARNING).

    Faili ya usanidi ya php.ini ndio zana kuu ya usanidi kwa msingi wa PHP. Inahesabiwa kila wakati PHP inapoanzishwa. Ikiwa mabadiliko hayaonekani, hakikisha kuacha na kuanzisha upya httpd. Ikiwa mabadiliko uliyofanya bado yanatumika, tumia phpinfo() kazi ya kuangalia mahali php ini iko.

    Faili ya usanidi imetolewa maoni na maelezo ya kina. Vigezo ni nyeti kwa kesi, maadili ya neno kuu sio; nafasi na mistari inayoanza na semicolon hazizingatiwi. Thamani za boolean zinaweza kuwakilishwa kama 1/0, Ndiyo/Hapana, Imewashwa/Imezimwa au Kweli/Si kweli. Maadili chaguo-msingi katika php.ini yataathiri usakinishaji wa PHP, ambao unaweza kubinafsishwa baadaye.

    Katika makala hii tutaangalia mipangilio muhimu katika faili ya php.ini ambayo inaweza kuhitajika kwa kichanganuzi cha PHP.

    short_open_tag = Imezimwa

    Lebo fupi zilizo wazi zinaonekana kama hii:. Mipangilio hii lazima iwekwe kuwa Imezimwa ikiwa unataka kutumia vipengele vya kuchakata vya XML.

    safe_mode = Imezimwa

    Ikiwa mpangilio huu UMEWASHWA, huenda umekusanya PHP na bendera ya kuwezesha hali-salama. Hali salama ni muhimu zaidi kwa kutumia CGI.

    safe_mode_exec_dir =

    Chaguo hili ni muhimu tu ikiwa Hali salama imewashwa. Inaweza pia kusakinishwa na --with-exec-dir bendera wakati wa mchakato wa ujenzi wa Unix. PHP katika hali salama hutekeleza tu jozi za nje kutoka kwenye saraka hii. Saraka chaguo-msingi ni /usr/local/bin . Hii haina uhusiano wowote na kutumikia ukurasa wa wavuti wa kawaida wa PHP/HTML.

    safe_mode_allowed_env_vars =

    Chaguo hili la php ini linabainisha ni vigeu gani vya mazingira ambavyo watumiaji wanaweza kubadilisha katika hali salama. Kwa chaguo-msingi, ni vigeu hivyo tu ambavyo "PHP_" vimeambatishwa kwao. Ikiwa maagizo haya ni tupu, basi anuwai nyingi zinaweza kubadilishwa.

    safe_mode_protected_env_vars =

    Kigezo huweka vigezo vya mazingira ambavyo watumiaji hawawezi kubadilisha katika hali salama, hata kama chaguo la safe_mode_allowed_env_vars limewashwa.

    Disable_functions =

    Nyongeza muhimu zaidi kwa usanidi wa PHP4, ambao umehifadhiwa katika toleo la PHP5, ni uwezo wa kuzima vitendaji vilivyochaguliwa kwa sababu za usalama. Hapo awali, hii ilihitaji uhariri wa mwongozo wa msimbo C ambapo mkalimani wa PHP aliandikwa. Mfumo wa faili, mfumo wa uendeshaji, na vitendaji vya mtandao vinapaswa kuwa vya kwanza kwenye orodha hii kwa sababu uwezo wa kuandika faili na kubadilisha mfumo kupitia HTTP si salama.

    max_execution_time = 30

    Wakati wa kusanidi php ini, unahitaji kufahamu kuwa set_time_limit() kazi haitafanya kazi katika hali salama. Kwa hiyo, hii ndiyo njia kuu ya kutekeleza kuchelewesha utekelezaji wa hati katika hali salama. Kwenye Windows, lazima ulazimishe kukomesha kulingana na utumiaji wa kumbukumbu ya juu, sio wakati. Unaweza pia kutumia mpangilio wa kuisha kwa muda wa Apache ili kutekeleza ucheleweshaji. Lakini pia itatumika kwa faili za tovuti zisizo za PHP.

    error_reporting = E_ALL & ~E_NOTICE

    Chaguomsingi ni E_ALL & ~E_NOTICE , hitilafu zote isipokuwa arifa. Seva zinapaswa kuwekwa kwa angalau thamani chaguo-msingi. Na tu kwenye seva kuu unaweza kutumia thamani ya chini.

    error_prepend_string = [""]

    Pamoja na » inatumika kwa kamba, kama katika kuunda thamani ya uga wa fomu.

    variables_order = EGPCS

    Inachukua nafasi ya gpc_order . Matoleo yote mawili yameacha kutumika pamoja na register_globals. Inaweka mpangilio wa anuwai anuwai: Mazingira, GET, POST, COOKIE na SERVER ( au Imejengwa ndani) Unaweza kubadilisha agizo hili. Vigezo vitaandikwa upya kwa kufuatana kutoka kushoto kwenda kulia, na kulia kabisa kila wakati " mafanikio" Hii ina maana kwamba ukiacha thamani ya chaguo-msingi na kutumia jina lile lile kwa utofauti wa mazingira, utofauti wa POST, na utofauti wa COOKIE, jina litaishia kuwa tofauti ya COOKIE.

    register_globals = Imezimwa

    Chaguo hili la seti ya php ini hukuruhusu kubaini ikiwa vigeu vya EGPCS vinapaswa kusajiliwa kama kimataifa. Njia hii kwa sasa imeacha kutumika, na kufikia PHP 4.2 bendera hii imewekwa kuwa Zima kwa chaguomsingi. Tumia safu za superglobal badala yake.

    gpc_order = GPC

    Chaguo hili limeacha kutumika.

    magic_quotes_gpc = Washa

    Huepuka manukuu katika ingizo la GET/POST/COOKIE. Ikiwa unatumia fomu nyingi zinazowasilisha data kwako au fomu zingine, na kuonyesha thamani za fomu, utahitaji kuwezesha agizo hili au kutumia vitendaji vya addslash() kwenye aina za data za mfuatano.

    magic_quotes_runtime = Imezimwa

    Chaguo hili huepuka nukuu katika mifuatano ya hifadhidata inayoingia na mifuatano ya maandishi. Kumbuka kwamba SQL huongeza mikwaju kwa nukuu moja na viapostrofi wakati wa kuhifadhi mifuatano na haiziondoi wakati wa kurudisha mifuatano. Ikiwa chaguo hili limezimwa, lazima utumie vitendakazi vya stripslash() wakati wa kutoa aina yoyote ya data ya mfuatano kutoka kwa hifadhidata ya SQL. Ikiwa magic_quotes_sybase imewekwa kwa Washa, basi mpangilio huu unapaswa Kuwa Umezimwa.

    magic_quotes_sybase = Imezimwa

    Huepuka nukuu moja katika mifuatano ya hifadhidata inayoingia na mifuatano ya maandishi yenye manukuu moja ya mtindo wa Sybase badala ya mikwaruzo. Ikiwa magic_quotes_runtime imewekwa kuwa Imewashwa, chaguo hili linafaa kuzimwa.

    faili-prepend-otomatiki=

    Ikiwa kigezo hiki cha php ini kinabainisha njia, PHP inapaswa kuongeza kiotomatiki ni pamoja na () ujenzi mwanzoni mwa kila faili ya PHP. Vizuizi vya kujumuisha njia za faili vinapaswa kuzingatiwa.

    ongeza-otomatiki-faili=

    Ikiwa kigezo hiki kitabainisha njia, PHP lazima iweke kiotomatiki muundo wa include() mwishoni mwa kila faili ya PHP, isipokuwa wakati wa kuondoka kwa kutumia kitendakazi cha kutoka (). Vizuizi vya kujumuisha njia za faili vinapaswa kuzingatiwa.

    ni pamoja na_njia =

    Ukiweka thamani hii, utaruhusiwa tu kujumuisha au kuomba faili kutoka kwa saraka zilizobainishwa. Saraka ya pamoja kawaida iko chini ya hati ya mizizi. Hii ni muhimu ikiwa unafanya kazi katika hali salama. Weka kigezo kuwa .in ili kujumuisha faili kutoka saraka ambapo hati yako iko. Saraka nyingi zimetenganishwa na koloni: .:/usr/local/apache/htdocs:/usr/local/lib.

    doc_root =

    Wakati wa kusanidi php ini, ikiwa unatumia Apache, basi katika faili ya httpd.conf saraka ya mizizi ya hati kwa seva hii au mwenyeji wa kawaida tayari imewekwa. Weka thamani hii hapa ikiwa unatumia Hali salama au unataka tu kuruhusu PHP kwa sehemu ya tovuti ( kwa mfano, katika orodha ndogo tu).

    faili_uploads =

    Washa bendera hii ikiwa unapakia faili kwa kutumia hati ya PHP.

    upload_tmp_dir =

    Usiondoe maoni kutoka kwa mstari huu ikiwa huelewi nini!

    session.save-handler = faili

    Isipokuwa katika hali nadra, hauitaji kubadilisha mpangilio huu.

    kupuuza_mtumiaji_acha =

    Huamua kinachotokea ikiwa mgeni wa tovuti atabofya " Acha" Chaguo-msingi ni Washa, kumaanisha kuwa hati itaendelea kufanya kazi hadi ikamilike au kuisha. Ukibadilisha thamani ya kigezo hiki kuwa Off , hati itakatizwa. Chaguo hili hufanya kazi tu katika hali ya moduli, sio katika hali ya CGI.

    mysql.default_host = jina la mwenyeji

    Seva mwenyeji chaguo-msingi ya kutumia wakati wa kuunganisha kwenye seva ya hifadhidata ikiwa hakuna seva pangishi nyingine iliyobainishwa.

    mysql.default_user = jina la mtumiaji

    Kigezo hiki cha php ini kinabainisha jina la mtumiaji chaguo-msingi linalotumiwa wakati wa kuunganisha kwenye seva ya hifadhidata ikiwa hakuna jina lingine lililotajwa.

    mysql.default_password = nenosiri

    Nenosiri chaguo-msingi linalotumiwa wakati wa kuunganisha kwenye seva ya hifadhidata isipokuwa nenosiri tofauti limebainishwa.

    Tafsiri ya kifungu " PHP 7 - PHP.INI Usanidi wa Faili» ilitayarishwa na timu rafiki ya Jengo la Tovuti kutoka kwa mradi wa A hadi Z.