PHP.mk документација

Инсталација

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

faq.installation.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека faq.installation.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
Инсталација

Референца за `faq.installation.php` со подобрена типографија и навигација.

faq.installation.php

Инсталација

Овој дел содржи најчесто поставувани прашања за начинот на инсталирање на PHP. PHP е достапен за речиси секој оперативен систем и речиси секој веб сервер.

За да го инсталирате PHP, следете ги упатствата во Инсталација и конфигурација.

  1. Зошто не треба да користам Apache2 со нишкаст MPM во продукциско опкружување?
  2. Unix/Windows: Каде треба да се наоѓа мојата php.ini датотека?
  3. Unix: Инсталирав PHP, но секогаш кога вчитувам документ, добивам порака 'Документот не содржи податоци'! Што се случува овде?
  4. Unix: Инсталирав PHP користејќи RPMS, но Apache не ги обработува PHP страниците! Што се случува овде?
  5. Unix: Го поправив Apache со поправката за екстензиите на FrontPage, и одеднаш PHP престана да работи. Дали PHP е некомпатибилен со екстензиите на Apache FrontPage?
  6. Unix/Windows: Инсталирав PHP, но кога се обидувам да пристапам до PHP скрипт датотека преку мојот прелистувач, добивам празен екран.
  7. Unix/Windows: Инсталирав PHP, но кога се обидувам да пристапам до PHP скрипт датотека преку мојот прелистувач, добивам грешка 500 на серверот.
  8. Некои оперативни системи: Инсталирав PHP без грешки, но кога се обидувам да го стартувам Apache добивам грешки за недефинирани симболи: [mybox:user /src/php5] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols: _compress _uncompress
  9. Windows: Инсталирав PHP, но кога се обидувам да пристапам до PHP скрипт датотека преку мојот прелистувач, добивам грешка: cgi error: The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
  10. Windows: Ги следев сите упатства, но сепак не можам да ги натерам PHP и IIS да работат заедно!
  11. При стартување на PHP како CGI со IIS, PWS, OmniHTTPD или Xitami, добивам следнава грешка: Безбедносно предупредување! PHP CGI не може да се пристапи директно..
  12. Како да знам дали мојата php.ini се наоѓа и се чита? Се чини дека не е така бидејќи моите промени не се имплементираат.
  13. Како да го додадам мојот PHP директориум во PATH на Windows?
  14. Како да ја направам php.ini датотеката достапна за PHP на Windows?
  15. Windows: Како да потврдам дека PHP може да пишува во привремената директорија под IIS?
  16. Дали е можно да се користи Apache преговори за содржина (опција MultiViews) со PHP?
  17. Дали PHP е ограничен само на обработка на GET и POST методи на барање?
Зошто не треба да користам Apache2 со нишкаст MPM во продукциско опкружување?

PHP е лепило. Тоа е лепилото што се користи за градење кул веб апликации со спојување на десетици библиотеки од трети страни и правење сè да изгледа како една кохерентна целина преку интуитивен и лесен за учење јазичен интерфејс. Флексибилноста и моќта на PHP се потпираат на стабилноста и робусноста на основната платформа. Потребен е функционален оперативен систем, функционален веб сервер и функционални библиотеки од трети страни за спојување. Кога некој од овие престанува да работи, PHP треба начини да ги идентификува проблемите и брзо да ги поправи. Кога основната рамка ја правите посложена со тоа што немате целосно одвоени нишки за извршување, целосно одвоени мемориски сегменти и силен песок за секое барање да игра во него, се воведуваат дополнителни слабости во системот на PHP.

If you want to use a threaded MPM, look at a FastCGI configuration where PHP is running in its own memory space.

Ако сакате да користите нишки MPM, погледнете ја конфигурацијата FastCGI каде PHP работи во својот сопствен мемориски простор. php.ini Unix/Windows: Каде треба да се наоѓа мојот

фајл? /usr/local/lib Стандардно на Unix, треба да биде во што е<install-path>/lib --with-config-file-path . Повеќето луѓе ќе сакаат да го променат ова при компилација со

--with-config-file-path=/etc
знаме. На пример, би го поставиле со нешто како: php.ini-development И тогаш би го копирале /etc/php.ini од дистрибуцијата до
--with-config-file-scan-dir=PATH

и би го уредиле за да направите какви било локални промени што ги сакате. php.ini На Windows, стандардната патека за php.ini фајлот е директориумот на Windows. Ако го користите веб-серверот Apache, прво се пребарува во директориумот за инсталација на Apache, на пр.c:\program files\apache group\apache php.ini . На овој начин можете да имате различни

фајлови за различни верзии на Apache на иста машина. Погледнете го и поглавјето за.

Unix: Инсталирав PHP, но секогаш кога вчитувам документ, добивам порака 'Документот не содржи податоци'! Што се случува овде?

конфигурациски фајл

  • Ако сакате да користите MPM со нишки, погледнете ја конфигурацијата FastCGI каде што PHP работи во својот сопствен мемориски простор.

  • Запрете ги вашите httpd процеси

  • Ако сакате да користите MPM со нишки, погледнете ја конфигурацијата FastCGI каде што PHP работи во својот сопствен мемориски простор.

  • gdb httpd

  • > run -X -f /path/to/httpd.conf

  • gdb httpd

  • Потоа преземете ја URL-та што го предизвикува проблемот со вашиот прелистувач

  • Ако добивате core dump, gdb треба да ве извести за тоа сега

  • type: bt » https://github.com/php/php-src/issues

Треба да го вклучите вашиот backtrace во вашиот извештај за грешки. Ова треба да се поднесе доpreg_match() Ако вашиот скрипт користи функции за регуларни изрази (

Unix: Инсталирав PHP користејќи RPMS, но Apache не ги обработува PHP страниците! Што се случува овде?

и пријатели), треба да се погрижите да сте ги компајили PHP и Apache со истиот пакет за регуларни изрази. Ова треба автоматски да се случи со PHP и Apache 1.3.x httpd.conf датотека:

# Extra Modules
AddModule mod_php.c
AddModule mod_perl.c

# Extra Modules
LoadModule php_module         modules/mod_php.so
LoadModule php5_module        modules/libphp5.so
LoadModule perl_module        modules/libperl.so
Под претпоставка дека сте инсталирале и Apache и PHP од RPM пакети, треба да ги откоментирате или додадете некои или сите од следниве редови во вашиот
AddType application/x-httpd-php .php
И додадете:
Unix: Го поправив Apache со поправката за екстензиите на FrontPage, и одеднаш PHP престана да работи. Дали PHP е некомпатибилен со екстензиите на Apache FrontPage?

... на глобалните својства, или на својствата на VirtualDomain на кој сакате да додадете поддршка за PHP.

Unix/Windows: Инсталирав PHP, но кога се обидувам да пристапам до PHP скрипт датотека преку мојот прелистувач, добивам празен екран.

Не, PHP работи добро со FrontPage екстензиите. Проблемот е што FrontPage пачот менува неколку Apache структури, на кои PHP се потпира. Рекомпилирањето на PHP (користејќи 'make clean ; make') откако ќе се примени FP пачот би го решило проблемот.

Unix/Windows: Инсталирав PHP, но кога се обидувам да пристапам до PHP скрипт датотека преку мојот прелистувач, добивам грешка 500 на серверот.

Направете 'view source' во веб прелистувачот и веројатно ќе откриете дека можете да го видите изворниот код на вашиот PHP скрипт. Ова значи дека веб серверот не го испратил скриптот до PHP за интерпретација. Нешто не е во ред со конфигурацијата на серверот - двојно проверете ја конфигурацијата на серверот според упатствата за инсталација на PHP.php.exe Нешто тргна наопаку кога серверот се обиде да го стартува PHP. За да видите смислена порака за грешка, од командната линија, сменете ја директориумот што го содржи PHP извршниот фајл ( на Windows) и стартувајтеphp -i phpinfo() . Ако PHP има проблеми со стартувањето, тогаш ќе се прикаже соодветна порака за грешка што ќе ви даде навестување за тоа што треба да се направи следно. Ако добиете екран полн со HTML кодови (излезот на

функцијата) тогаш PHP работи, и вашиот проблем може да биде поврзан со конфигурацијата на вашиот сервер што треба да ја проверите.
[mybox:user /src/php5] root# apachectl configtest
 apachectl: /usr/local/apache/bin/httpd Undefined symbols:
  _compress
  _uncompress

Ова всушност нема врска со PHP, туку со клиентските библиотеки на MySQL. Некои бараат --with-zlib, други не. Ова е исто така опфатено во MySQL FAQ.

Windows: Инсталирав PHP, но кога се обидувам да пристапам до PHP скрипт датотека преку мојот прелистувач, добивам грешка:
cgi error:
 The specified CGI application misbehaved by not
 returning a complete set of HTTP headers.
 The headers it did return are:

Оваа порака за грешка значи дека PHP не успеа да прикаже ништо. За да видите смислена порака за грешка, од командната линија, одете во директориумот што го содржи извршниот PHP (php.exe Нешто тргна наопаку кога серверот се обиде да го стартува PHP. За да видите смислена порака за грешка, од командната линија, сменете ја директориумот што го содржи PHP извршниот фајл ( на Windows) и стартувајтеphp -i phpinfo() функција), тогаш PHP работи.

Откако PHP работи на командната линија, обидете се повторно да пристапите до скриптата преку прелистувачот. Ако сè уште не успее, тогаш може да биде една од следниве причини:

  • Дозволи за датотеки на вашата PHP скрипта, php.exe, php5ts.dll, php.ini или било кои PHP екстензии што се обидувате да ги вчитате се такви што анонимниот интернет корисник ISUR_<machinename> не може да им пристапи.
  • Скрипт датотеката не постои (или можеби не е таму каде што мислите дека е во однос на вашиот веб корен директориум). Имајте предвид дека за IIS можете да ја фатите оваа грешка со штиклирање на полето 'провери дали датотеката постои' кога ги поставувате мапирањата на скрипти во Internet Services Manager. Ако скрипт датотеката не постои, тогаш серверот ќе врати грешка 404 наместо тоа. Постои и дополнителна придобивка што IIS ќе ја направи секоја автентикација што е потребна за вас врз основа на NTLanMan дозволите на вашата скрипт датотека.
Windows: Ги следев сите упатства, но сепак не можам да ги натерам PHP и IIS да работат заедно!

Проверете дали секој корисник што треба да изврши PHP скрипта има права да изврши php.exe! IIS користи анонимен корисник кој се додава во времето кога се инсталира IIS. Овој корисник има права да php.exe. Исто така, секој автентициран корисник исто така ќе има права да изврши php.exe. И за IIS4 треба да му кажете дека PHP е мотор за скрипти. Исто така, ќе сакате да прочитате овој faq.

Кога извршувам PHP како CGI со IIS, PWS, OmniHTTPD или Xitami, добивам следнава грешка: Security Alert! PHP CGI cannot be accessed directly..

Мора да го поставите cgi.force_redirect Можеме да го поправиме ова со поставување на 0. Стандардно е 1 , па бидете сигурни дека директивата не е коментирана (со ;). Како и сите директиви, ова се поставува во php.ini

Запрете ги вашите httpd процеси 1Бидејќи стандардно е php.ini , критично е да бидете 100% сигурни дека се чита точната овој faq интерполација на низи

датотека. Прочитајте php.ini Како да знам дали мојот

се наоѓа и се чита? Се чини дека не е така бидејќи моите промени не се имплементираат. php.ini За да бидете сигурни дека вашиот phpinfo()се чита од PHP, направете повик до Configuration File (php.ini). На врвот ќе има листа наречена php.ini . Ова ќе ви каже каде PHP бара PATH и дали се чита. Ако само директориум php.ini постои, тогаш не се чита и треба да го ставите вашиот php.ini во тој директориум. Ако PATHе вклучено во

Враќа php.ini , се чита. php.ini

Види исто така php_ini_loaded_file().

се чита и работите PHP како модул, тогаш бидете сигурни дека ќе го рестартирате вашиот веб сервер откако ќе направите промени во PATH Како да го додадам мојот PHP директориум во

на Windows?

  • На Windows:

  • Одете во Контролен панел и отворете ја иконата Систем (Start → Control Panel)

  • Кликнете на копчето 'Променливи на околината'

  • Погледнете во панелот 'Системски променливи'

  • Најдете го записот Path (можеби ќе треба да скролувате за да го најдете)

  • Двоен клик на записот Path

  • Внесете ја вашата PHP директориум на крајот, вклучувајќи ';' пред (на пр. ;C:\php)

  • Притиснете OK

Забелешка: Бидете сигурни дека ќе го рестартирате по следењето на чекорите погоре за да се осигурате дека PATH промените се применуваат.

Како да го направам php.ini датотеката достапна за PHP на Windows?

Постојат неколку начини да го направите ова. Ако користите Apache, погледнете во документацијата на Apache, инаку мора да го поставите PHPRC променливата на околината.

Windows: Како да потврдам дека PHP може да пишува во привремената директорија под IIS?

  1. Кликнете со десното копче на привремената директорија (Бидејќи стандардното е) во File Explorer за да ги добиете дозволите. Привремената директорија е достапна од конфигурацијата или phpinfo().

  2. За IIS, проверете дали корисникот IIS_User has MODIFY permission.

Дали е можно да се користи Apache преговори за содржина (опција MultiViews) со PHP?

Ако врските до PHP датотеките вклучуваат екстензија, сè работи совршено. Ова ЧПП е само за случајот кога врските до PHP датотеките не вклучуваат екстензија и сакате да користите преговори за содржина за да изберете PHP датотеки од URL без екстензија. Во овој случај, заменете го редот AddType application/x-httpd-php .php со:

AddHandler php5-script php
AddType text/html php
Ова решение не работи за Apache 1 бидејќи PHP модулот не го фаќа php-script.
Дали PHP е ограничен само на обработка на GET и POST методи на барање?

Не, можно е да се обработи кој било метод на барање, на пр. CONNECT. Правилен статус на одговор може да се испрати со header(). Ако треба да се обработат само GET и POST методи, тоа може да се постигне со оваа Apache конфигурација:

<LimitExcept GET POST>
Deny from all
</LimitExcept>

Белешки од корисници 5 белешки

пер дот фиксе ат ипј дот но
20 години пред
Installing PHP 4 or 5 on Windows Server 2003 x64 results in http error 505. This is not a PHP bug. It is due to running a 32-bit ISAPI DLL under the 64-bit version of IIS 6, as documented here: http://support.microsoft.com/?id=895976

Solution: Flip the Metabase flag for Enable32bitAppOnWin64 as described in http://support.microsoft.com/?id=894435 , 
like this: CSCRIPT ADSUTIL.VBS SET W3SVC/AppPools/Enable32bitAppOnWin64 1

(Alternatively with full path: cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1)
цхарлес линцх ат кyберсофтваре дот цом
пред 17 години
One final note to the message below if you are getting the message about not having rights to execute...You need to use IIS right click on the website and choose 'Properties/Home Directory' then on the 'Execute Permissions' combo box you need to choose 'Scripts only'...Click ok...another dialog may appear asking which directories to apply the action too...choose any directories that you intend on using php in and click ok...It should work now...
емзеперx ат емзепер дот ху
20 години пред
You do not have to restart the whole system make effect of changing the PATH env var. For me (sbs2003) worked automatically.
on older systems you can use

set $Path=%path%;c:\php

command to extend immediately the path var.
јоерг ат фенин дот де
пред 18 години
To limit HTTP Request Methods on the Apache server running PHP you should use mod_rewrite or mod_security instead of LimitExcept, to give you more control over the handling of such http errors.  Can go in .htaccess file or httpd.conf

# mod_rewrite
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST)$
  RewriteRule .* - [F,L]
</IfModule>

# mod_security
<IfModule mod_security.c>
  SecFilterSelective REQUEST_METHOD "!^(GET|HEAD|POST)$" "deny,log,status:403"
</IfModule>

You can use the php request method scanner at askapache to see exactly how your server deals with various request methods, and check that your server is configured properly..  

http://www.askapache.com/online-tools/request-method-scanner/
Цуртис
пред 18 години
I have some additional troubleshooting tips for 53.7, which deals with getting a blank screen on your browser when running a PHP script.

In addition to server misconfiguration, it may also be that PHP isn't configured to output errors to the browser, which is the case if you or your host uses a more secure php.ini. If this is the case, you need to find out where errors are being logged to find out if any errors are preventing normal output from being delivered to the client.

If you have access to php.ini, check the 'display_errors' directive, which is, by default, located under the 'error_reporting' directive. It's helpful to have 'display_errors' on during debugging phases, but best to have it off in production environments.

Related functions: http://php.net/ini_set | http://php.net/error_reporting | http://php.net/error_log
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.