PHP: Установка - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Проблемы Сборки Вопросы по Базам Данных

Last updated: Sat, 27 Jan 2007

view this page in

# Глава 53. Установка

Этот раздел содержит общие вопросы по установке PHP. PHP доступен практически для любой ОС (за исключением, может быть, MacOS предшествующей OSX) и любого web сервера.

Для установки PHP следуйте инструкциям в файле INSTALL из дистрибутива. Пользователи Windows также должны прочитать install.txt. И здесь есть некоторые полезные советы для пользователей Windows.

1. Почему я не должен использовать Apache2 с потоковым MPM в эксплуатации?
2. Unix/Windows: Где должен находиться файл `php.ini`?
3. Unix: Я установил PHP, но каждый раз при загрузке документа я получаю сообщение 'Document Contains No Data' (Документ Не Содержит Данных)! Что происходит?
4. Unix: Я установил PHP, используя RPMS, но Apache не обрабатывает PHP страницы! Что происходит?
5. Unix: Я установил PHP 3 используя RPMS, но он не компилируется с поддержкой нужной мне базы данных! Что происходит?
6. Unix: Я установил заплатку в Apache для расширений FrontPage и неожиданно PHP перестал работать. Неужели PHP не совместим с FrontPage расширениями для Apache?
7. Unix/Windows: Я установил PHP, но когда я пытаюсь вызвать PHP скрипт из моего браузера, я получаю пустой экран.
8. Unix/Windows: Я установил PHP, но когда я пытаюсь вызвать PHP скрипт из моего браузера, я получаю ошибку сервера 500.
9. Некоторые операционные системы: Я установил PHP без ошибок, но когда я пытаюсь запустить Apache, я получаю ошибки "undefined symbol" (неопределённый символ):

    [mybox:user /src/php4] root# apachectl configtest
     apachectl: /usr/local/apache/bin/httpd Undefined symbols:
      _compress
      _uncompress

10. 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:

11. Windows: Я следовал всем инструкциям, но так и не смог заставить PHP и IIS работать вместе!
12. Когда PHP запускается как CGI в IIS, PWS, OmniHTTPD или Xitami, я получаю следующую ошибку: `Security Alert! PHP CGI cannot be accessed directly.`.
13. Как узнать, что мой `php.ini` был найден и прочтён? Похоже, что мои изменения не были восприняты?
14. Как на Windows добавить мою PHP директорию в `PATH`?
15. Как в Windows сделать файл `php.ini` доступным для PHP?
16. Возможно ли использовать согласование содержания в Apache (опция MultiViews) c PHP?

1. Почему я не должен использовать Apache2 с потоковым MPM в эксплуатации?

PHP - это клей. Клей, используемый для построения классных web приложений, склеивая дюжины сторонних библиотек и создавая впечатление одного согласованного целого, с помощью интуитивного и легко изучаемого языка. Гибкость и мощь PHP полагается на стабильность и устойчивость используемой платформы. Для склейки вместе ему необходимы работающая ОС, работающий web сервер и работающие сторонние библиотеки. Когда что-либо из этого перестаёт работать PHP нужны способы определения проблем и их быстрого исправления. Если вы усложняете низлежащую систему, не разделяя полностью потоки выполнения, не выделяя раздельные сегменты памяти и не предоставляя "песочницу" для игры для каждого запроса, то ваша PHP система увязнет в глине.

Если вы всё-таки чувствуете, что должны использовать потоковый MPM, взгляните на конфигурацию с FastCGI, где вы можете запускать PHP в своём собственном пространстве памяти.

И наконец, это предупреждение против потокового MPM не настолько остро для пользователей Windows, так как большинство библиотек на этой платформе потокобезопасны.

2. Unix/Windows: Где должен находиться файл `php.ini`?

На Unix по умолчанию он должен находиться в директории `/usr/local/lib`, определяемой как `<install-path>/lib`. Большинство людей изменяют это во время компиляции с помощью опции --with-config-file-path Для примера, вы можете задать что-то типа:

    --with-config-file-path=/etc

Затем скопировать файл `php.ini-dist` из дистрибутива в `/etc/php.ini` и отредактировать его для ваших локальных потребностей.

    --with-config-file-scan-dir=PATH

На Windows по умолчанию `php.ini` находится в Windows директории. Если вы используете Apache web сервер, `php.ini` сначала ищется в директории, где был установлен Apache, например `c:\program files\apache group\apache`. В этом случае на одной машине у вас могут быть разные файлы `php.ini` для разных версий Apache.

Смотрите также главу о конфигурационном файле.

3. Unix: Я установил PHP, но каждый раз при загрузке документа я получаю сообщение 'Document Contains No Data' (Документ Не Содержит Данных)! Что происходит?

Вероятно, PHP падает по какой-то причине. Для того, чтобы убедиться в этом, просмотрите лог ошибок вашего сервера и затем попытайтесь воспроизвести проблему с помощью небольшого тестового примера. Если вы умеете пользоваться 'gdb', то добавьте трассировку к вашему сообщению об ошибке, это поможет разработчикам точно определить проблему. Если вы используете PHP как модуль Apache попробуйте что-то типа:

- Остановите ваши httpd процессы

- gdb httpd

- Остановите ваши httpd процессы

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

- Затем вызовите URL, на котором возникает проблема, из вашего браузера

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

- Если вы получаете дамп, gdb должен сейчас сообщить вам об этом

- введите: bt

- Вам необходимо включить трассировку в ваше сообщение об ошибке, которое должно быть отправлено с http://bugs.php.net/

Если ваш скрипт использует функции регулярных выражений (ereg() и компания), то вам необходимо убедиться, что вы скомпилировали PHP и Apache с одним и тем же пакетом регулярных выражений. Это должно происходить автоматически для PHP и Apache 1.3.x

4. Unix: Я установил PHP, используя RPMS, но Apache не обрабатывает PHP страницы! Что происходит?

Полагая, что Apache и PHP оба были установлены из пакетов RPM, вам требуется в вашем файле `httpd.conf` раскомментировать или добавить все или некоторые из следующих строк:

    # Extra Modules
    AddModule mod_php.c
    AddModule mod_php3.c
    AddModule mod_perl.c

    # Extra Modules
    LoadModule php_module         modules/mod_php.so
    LoadModule php3_module        modules/libphp3.so     # for PHP 3
    LoadModule php4_module        modules/libphp4.so     # for PHP 4
    LoadModule perl_module        modules/libperl.so

И добавить:

    AddType application/x-httpd-php3 .php3    # for PHP 3
    AddType application/x-httpd-php .php      # for PHP 4

... в глобальные свойства или в свойства VirtualDomain, для которого вы хотите иметь поддержку PHP.

5. Unix: Я установил PHP 3 используя RPMS, но он не компилируется с поддержкой нужной мне базы данных! Что происходит?

Из-за того, как построен PHP 3, собрать полный и гибкий RPM для PHP не легко. Эта проблема решена в PHP 4. Для PHP 3 мы рекомендуем способ, описанный в файле INSTALL.REDHAT из дистрибутива PHP. Если вы всё-таки настаиваете на использовании варианта с RPM для PHP 3, читайте далее...

Те, кто собирает RPM пакеты, настраивают RPMS для установки без поддержки баз данных для упрощения установок и потому что RPMS использует /usr/ вместо стандартной /usr/local/ директории для файлов. Вам необходимо указать в спек файле RPM какие базы данных поддерживать и где находится ваш сервер баз данных.

Следующий пример объясняет процесс добавления поддержки для популярного сервера баз данных MySQL, используя mod установку для Apache.

Конечно, всё это может быть применено для любого сервера баз данных, который PHP поддерживает. Для этого примера, мы будем полагать, что вы установили MySQL и Apache полностью с RPMS.

- Во-первых, удалите mod_php3 :

      rpm -e mod_php3

- Затем получите rpm с исходниками и УСТАНОВИТЕ его, НЕ --rebuild

      rpm -Uvh mod_php3-3.0.5-2.src.rpm

- Затем отредактируйте файл `/usr/src/redhat/SPECS/mod_php3.spec`

  В секции %build добавьте поддержку нужной вам базы данныз и укажите путь

  Для MySQL вы добавите `--with-mysql=/usr` Секция %build будет выглядеть как что-то типа следующего:

      ./configure --prefix=/usr \
      --with-apxs=/usr/sbin/apxs \
      --with-config-file-path=/usr/lib \
      --enable-debug=no \
      --enable-safe-mode \
      --with-exec-dir=/usr/bin \
      --with-mysql=/usr \
      --with-system-regex

- После того, как вы сделали эти изменения, постройте бинарный rpm как:

      rpm -bb /usr/src/redhat/SPECS/mod_php3.spec

- Затем установите этот rpm

      rpm -ivh /usr/src/redhat/RPMS/i386/mod_php3-3.0.5-2.i386.rpm

Перезапустите Apache и теперь у вас есть PHP 3 с поддержкой MySQL, установленный из RPM. Заметьте, что на много проще просто собрать PHP 3 из дистрибутива и следовать инструкциям в файле `INSTALL.REDHAT` дистрибутива.

6. Unix: Я установил заплатку в Apache для расширений FrontPage и неожиданно PHP перестал работать. Неужели PHP не совместим с FrontPage расширениями для Apache?

Нет, PHP прекрасно работает с FrontPage расширениями. Проблема в том, что FrontPage заплатка изменяет некоторые важные для PHP структуры. Перекомпиляция PHP (выполняя 'make clean ; make') после установки FP заплатки должна решить эту проблему.

7. Unix/Windows: Я установил PHP, но когда я пытаюсь вызвать PHP скрипт из моего браузера, я получаю пустой экран.

Сделайте просмотр исходника ('view source') в web браузере и, вероятно, вы увидите исходный код вашего PHP скрипта. Это означает, что web сервер не послал скрипт PHP для интерпретации. Что-то не так с конфигурацией сервера, проверьте конфигурацию сервера согласно установочным инструкциям PHP.

8. Unix/Windows: Я установил PHP, но когда я пытаюсь вызвать PHP скрипт из моего браузера, я получаю ошибку сервера 500.

Что-то произошло когда сервер пытался выполнить PHP. Чтобы увидеть более вразумительное сообщение об ошибке, используя командную строку, перейдите в директорию где находится исполняемый файл PHP (`php.exe` на Windows) и запустите php -i. Если при запуске PHP возникли какие-либо проблемы, то появится соответствующее сообщение об ошибке, которое может дать вам понять что делать дальше. Если вы получаете экран, заполненый HTML кодом (вывод функции phpinfo()), то PHP работает и ваша проблема возможно связана с конфигурацией вашего сервера, которую вам необходимо проверить.

9. Некоторые операционные системы: Я установил PHP без ошибок, но когда я пытаюсь запустить Apache, я получаю ошибки "undefined symbol" (неопределённый символ):

    [mybox:user /src/php4] root# apachectl configtest
     apachectl: /usr/local/apache/bin/httpd Undefined symbols:
      _compress
      _uncompress

На самом деле это связано с клиентскими библиотеками MySQL и не имеет никакого отношения к PHP. Одним нужна опция `--with-zlib`, другим - нет. Это также описано в MySQL FAQ.

10. 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` на Windows) и запустите php -i. Если при запуске PHP возникли какие-либо проблемы, то появится соответствующее сообщение об ошибке, которое может дать вам понять что делать дальше. Если вы получаете экран, заполненый HTML кодом (вывод фиункци phpinfo() функции), то PHP работает.

Как только PHP работает из командной строки, попытайтесь опять вызвать скрипт из браузера. Если он все также не работает, то причина может быть одна из следующих:

- Анонимный пользователь Internet не имеет доступ к вашему PHP скрипту, `php.exe`, `php4ts.dll`, `php.ini` или любому загружаемому PHP расширению из за прав доступа, установленных на эти файлы.

- Файл скрипта не существует (или, вероятно, не там где вы думаете он должен быть, относительно вашей корневой web директории). Заметьте, что для IIS вы можете поймать эту ошибку пометив 'check file exists' при настройке ассоциирования скриптов (script mappings) в Администраторе Internet Сервисов (Internet Services Manager). Если файл скрипта не существует, то сервер выдаст ошибку 404. Также допольнительная польза в том, что IIS будет выполнять необходимую вам аутентификацию, основываясь на NTLanMan правах доступа на ваш скрипт.

11. Windows: Я следовал всем инструкциям, но так и не смог заставить PHP и IIS работать вместе!

Убедитесь что все пользователи, кому необходимо запускать PHP скрипты, имеют право выполнять `php.exe`! IIS использует анонимного пользователя, который добавлен во время установки IIS. Этот пользователь должен иметь права на `php.exe`. Также любому аутентифицированному пользователю будут нужны права на выполнение `php.exe`. И для IIS4 вам необходимо сказать ему, что PHP является скриптовой системой. Также вам захочется прочитать это.

12. Когда PHP запускается как CGI в IIS, PWS, OmniHTTPD или Xitami, я получаю следующую ошибку: `Security Alert! PHP CGI cannot be accessed directly.`.

Вы должны установить директиву cgi.force_redirect в `0`. По умолчанию она установлена в `1`, поэтому убедитесь, что директива не закоментирована (с `;`). Как все директивы, она задается в `php.ini`

Так как значение по умолчанию `1`, то очень важно быть уверенным на 100%, что был прочитан верный `php.ini` файл. Для подробностей читайте здесь.

13. Как узнать, что мой `php.ini` был найден и прочтён? Похоже, что мои изменения не были восприняты?

Чтобы убедиться, что PHP прочитал ваш `php.ini`, вызовите phpinfo() и недалеко от начала будет находиться строка, озаглавленная `Configuration File (php.ini)`. Она скажет вам где PHP ищет `php.ini` и был ли файл прочитан. Если указана только директория, то файл не был прочитан и вы должны поместить ваш `php.ini` в эту директорию. Если `php.ini` включён в PATH, то он был прочитан.

Если `php.ini` был прочитан и вы запускаете PHP как модуль, то не забудьте перезапустить ваш web сервер после внесения изменений в `php.ini`.

14. Как на Windows добавить мою PHP директорию в `PATH`?

На Windows NT, 2000, XP и 2003:

- Идите в Control Panel и откройте системную иконку (Start -> Settings -> Control Panel -> System, или просто Start -> Control Panel -> System for Windows XP/2003)

- Перейдите в закладку Advanced

- Нажмите кнопку 'Environment Variables'

- Смотрите в окошко 'System Variables'

- Найдите Path (возможно, вам придется сделать прокрутку, чтобы найти его)

- Двойной щелчок на Path

- Добавьте в конец вашу PHP директорию через ';' (например `;C:\php`)

- Нажмите OK и перезапустите ваш компьютер

На Windows 98/Me вам необходимо отредактировать файл `autoexec.bat`:

- Откройте Notepad (Start -> Run и введите notepad)

- Откройте файл `C:\autoexec.bat`

- Найдите строку с PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;..... и добавьте в конец строки: `;C:\php`

- Сохраните файл и перезапустите ваш компьютер

Прежде в руководстве по PHP рекомендовалось копировать файлы в системную директорию Windows, так как эта директория (`C:\Windows`, `C:\WINNT`, и т.п.) входит в системный PATH по умолчанию. Копирование файлов в системную директорию Windows давно уже противопоказывается и может вызвать проблемы.

15. Как в Windows сделать файл `php.ini` доступным для PHP?

Для этого есть несколько путей. Если вы используете Apache, то читайте инструкции по его установке (Apache 1, Apache 2), в ином случае, вы должны установить переменную окружения `PHPRC`:

На Windows NT, 2000, XP и 2003:

- Идите в Control Panel и откройте системную иконку (Start -> Settings -> Control Panel -> System, или просто Start -> Control Panel -> System for Windows XP/2003)

- Перейдите в закладку Advanced

- Нажмите кнопку 'Environment Variables'

- Посмотрите в окошко 'System variables'

- Щёлкните на 'New' и введите 'PHPRC' как имя переменной и директорию, где находится `php.ini`, как значение переменной (например `C:\php`)

- Нажмите OK и перезапустите ваш компьютер

На Windows 98/Me вам необходимо отредактировать файл `autoexec.bat`:

- Откройте Notepad (Start -> Run и введите notepad)

- Откройте файл `C:\autoexec.bat`

- Добавьте новую строку в конец файла: `set PHPRC C:\php` (замените `C:\php` на директорию, где находится `php.ini`)

- Сохраните файл и перезапустите ваш компьютер

16. Возможно ли использовать согласование содержания в Apache (опция MultiViews) c PHP?

Всё работает замечательно, если линки к PHP файлам имеют расширение. Этот FAQ рассматривает только случай, когда линки к PHP файлам не имеют расширения и вы хотите использовать согласование содержания для отбора PHP файлов из URL без расширений. В этом случае, замените строку `AddType application/x-httpd-php .php` на:

    # PHP 4
    AddHandler php-script php
    AddType text/html php

    # PHP 5
    AddHandler php5-script php
    AddType text/html php

Это решение не работает в Apache 1, так как в нём PHP модуль не ловит `php-script`.
add a note User Contributed Notes
Установка
knutw at sparhell dot no
06-Nov-2006 09:15
`I recntly upgraded from PHP 5.1 to 5.2 on my Windows Server 2003 using IIS6. I selected CGI as before. My PHP folder is as always C:\Program Files\PHP. I also edited my brand new php.ini, enabling all my old extensions and recommended settings for IIS. I like not to keep my old config into a new version.
After upgrade, I just got blank pages in my browser, and the response status was 404 Not found.
I checked my installation twice, using this FAQ, but got no way.
Then I went to IIS Manager, Web Service Extensions. The php Service Extension was Allowed as it should. I deleted the Service Extension and added it. The old extension used short file names containing tilde (PROGRA~) character, but I don'æt know if that gas anything to do with the problem. Anyway, after allowing my" new" Service Extension, pointing to php-cgi.exe as before, mye web sites suddenly worked. So will revommend anyone with thos problem to delete and add the Servcie Extension. It didn't help re-allowing it, restarting IIS or the complete server.`
signd3 at yahoo dot com
23-Sep-2006 12:37
`re: Installation FAQ 13-Sep-2006 07:03
If you put the full path to your php.ini including the filename in the environmental variable PHPRC, my suspicion is you are in fact not using the php.ini that you think you are. Look at the contents of phpinfo() to verify this, and you will probably see that your php.ini location is C:\\Windows.
The reason for this is that if php does not find a valid php.ini in any path, it will load a default configuration. I too had the problem that when I set the PHPRC variable, the preprocessor was not parsing php content. When I made the change of PHPRC to the full path C:\\php\\php.ini and restarted IIS, it worked, but none of my settings in php.ini were in place.
Eventually I tracked my problem down to the recommended php.ini was causing my problem, and when I used php.ini-dist, everything worked correctly. My PHPRC is now set to
C:\\php, and phpinfo() correctly displays my php.ini path as C:\\PHP\\php.ini.
I can assure you the steps in the FAQ are correct for IIS 5.1, with php 5.1.6 isapi dll.
Hope this helps someone else.`
13-Sep-2006 07:03
`After setting the PHPRC environment variable, none of my PHP files would hit the preprocessor. The browser was just serving out PHP source code right there in the "view source."
The manual was telling me to set this var to "c:\php," but nothing was working. It's almost as if IIS/Win2000 wasn't reading my php.ini at all.
After I set that variable to "c:\php\php.ini," all of a sudden I was getting honest to goodness PHP pages working.`
info at kylierose dot com dot au
02-May-2006 03:22
`I had trouble using IIS and PHP with Firefox. If you are having similar problems then take a look at this article: http://blogs.wdevs.com/shog9/archive/2005/03/09/2668.aspx`
emzeperx at emzeper dot hu
01-Jan-2006 12:36
`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.`
JUSTANOTHERUSER
14-Aug-2005 11:23
`<LimitExcept GET POST>
Deny from all
</LimitExcept>
Does not work with Apache2+ & PHP5 . Apache Refuses to start`
per dot fikse at ipj dot no
12-Jul-2005 01:22
`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)`
patrick hat paddyworks dot com
23-May-2005 09:52
`In setting up PHP 5.0.4 + IIS 6 I can concur with vlad at vkelman dot com that setting the environment variable PHPRC is ineffective at telling IIS where to look for php.ini. The only place PHP5 seems to successfully find php.ini is in C:\Windows. Using PHPIniDir with Apache2 works like a charm, however.`
vlad at vkelman dot com
01-Mar-2005 08:45
`In addition of what jimo at mail dot azhsv dot com said:
I don't know which idiot at Microsoft wrote those Knowledge Base articles (http://support.microsoft.com/kb/328360/EN-US/) - maybe the same idiot who created "Web Server Extensions". But the same - adding extensions and enabling them may be achived much simplier: just open III Manager, go to "Web Server Extensions" and add what you need interactively.
I'm trying to make both PHP 4 and PHP 5 running as modules on my machine, PHP 4 under IIS and PHP 5 under Apache 2. It turns out that it much easier to work with Apache. In particular, it allows to use PHPIniDir directive to point PHP to php.ini file. IIS is supposed to allow it with setting the PHPRC environment variable, but for some reason it doesn't work on my machine so far.`
barry dot fagin at usafa dot af dot mil
04-Jan-2005 09:22
`Fixing 404 (file not found) errors with PHP 5.0.3 and IIS 6.0
IIS 6.0 is installed with security settings that don't permit dynamic content. This means that even if all the hints in the FAQ are paid attention to (.ini modified correctly, security and permissions correct for IUSR_xxx user, etc), you still get 404 errors for all php files.
To fix this: IIS Manager -> expand local computer -> Web Services Extensions -> Add web service or extension -> .php, browse to c:\php\php-cgi.exe or wherever you had the php executable installed. That plus setting the doc_root in the .ini file solved the problem.
--BF`
furrycod at hotmail dot com
07-Sep-2004 09:35
`Great WAMP 1.4.4 (Apache 1.*, MySql 4.*, PHP 4.*) installation article at http://www.circaware.com/articles.php?id=2
This article details how to install these onto a USB stick--which means changing *nothing* on the host PC, such as registry entries, environment variables, files in the Windows path, NT services, ini files, etc.
The USB stick install seems awkward, but I installed WAMP to my harddrive using this article as a guide (essentially replacing E:\ with C:\), and it works fine. No more trying to decide where the *real* php.ini or my.ini file is that needs to be changed.`
masternuthin diespammer at yahoo dot com
23-Jun-2004 03:33
`PHP 4.3.7.7 and IIS 6 (w2k3 standard)
Followed note from nigel dot salt at hotmail dot com
but had to modify "Script Map" to "ScriptMap"
Also, had to follow note from jimo at mail dot azhsv dot com
after all that - it worked.`
jeff_graham at datacenterservices dot net
01-Feb-2004 01:51
`As stated within the note "jimo at mail dot azhsv dot com
29-Nov-2003 04:33
PHP 4 and IIS 6.0 (Windows Server 2003)," I found the same steps were requiered for installation of PhP 5 beta 3 on my Windows 2003 server (Standard Edition)`
nigel dot salt at hotmail dot com
13-Dec-2003 05:00
`Finally got IIS 5 and PHP 5 to talk.
What worked for me was:
1) Set
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
W3SVC\Parameters\Script Map]
".php"="your path to php\\php.exe"
2) ensure there is not a php.ini in the windows system folder and that there is one wherever you've put PHP
3) edit php.ini and set cgi force redirect to 0 and cgi.rfc2616_headers = 1
4) Put the PHP scripts in their own folder underneath the inetpub root
5) Open the IIS console, right click your new php folder
In the Directory tab
set application name to the name of the folder
set executable and script as permission
set application protection to low
Click configuration and check that .php is mapped to wherever you put
PHP
Restart IIS
Try a very simple PHP page and it should work
Nigel`
jimo at mail dot azhsv dot com
29-Nov-2003 07:33
`PHP 4 and IIS 6.0 (Windows Server 2003)
Had difficulty getting PHP 4.3.3 to work with Win2003 Ent Server for use with SquirrelMail. Problem found and believed solved. Appears to be something New with IIS 6.0 (More security by Micro$oft) Was getting 404 error and php was not being run as a cgi even though it was in extensions and IIS user had rights to execute it. (php from command line operated correctly)
If you are installing on Windows Server 2003 (only have Enterprise Edition � Not sure if this applies to standard edition), and you have done the normal procedures for inclusion of PHP scripts (either ISAPI or CGI) in IIS, you will still get a 404 error when attempting to execute those scripts even though IIS has rights and the extension points to the correct file. To alleviate this problem, perform the following:
1. Open a command prompt window
2. Change to C:\windows\system32
3. Execute the command: cscript iisext.vbs /AddFile c:\php\php.exe 1 php 0 php
4. Execute the command: cscript iisext.vbs /EnFile c:\php\php.exe
5. To check for correct execution of the above,
6. Execute the command: cscript IisExt.vbs /ListFile � the php extension should be listed
If you try just step 4 without step 3 you get an error that the file is not in the list (and won�t be there till you do step 3 above)
After this, IIS seems to like the php extension and work normally.
For additional reference, see the below 3 Micro$oft KB Articles:
HOWTO: Enable and Disable ISAPI Extensions and CGI Applications in IIS 6.0 (MS KB Article 328360)
HOWTO List Web Server Extensions and Extension Files in IIS 6.0 (MS KB Article 328505)
HOWTO Add and Remove Web Service Extension Files in IIS 6.0 (MS KB Article 328419)`
peter dot mosinskisNOSPAM at csuci dot edu
06-Mar-2003 12:36
`Running Win2K AS + IIS5.0 + PHP 4.3.1, I ran into a nasty problem that I mistakenly thought had to do with something in the php.ini configuration. When I would try to submit a form using the HTTP method GET it would work, but I would get a "404 Page Not Found" error using the POST method.
All my permissions were set correctly, the php.ini was configured correctly. It had to do with URLScan being installed on IIS (see below)
Page 404 File Not Found Error When Using POST method in PHP (and Perl, and otherwise)
-------------------------------------------
This is related to the Microsoft URLScan utility. If you have this problem, the IIS administrator has probably run the IIS Lockdown tool as well as configured URLScan to reject this type of HTTP method when sent in a URL. These tools are meant to enhance web server security.
URLScan configuration files can be found in the \WINNT\system32\inetsrv\urlscan folder on the web server. Specifically, the file to modify is urlscan.ini.
The changes to make are as follows:
1. Make sure UseAllowVerbs=1 under [options]
2. Under the [AllowVerbs] section, list your allowed HTTP methods to include:
GET
POST
For more information on the IIS Lockdown tool and URLScan, visit http://technet.microsoft.com`
monroe at peoplego dot com
17-May-2002 10:32
`INSTALLATION ON OPENBSD 3.1 VIA PORTS COLLECTION
Would have succeed but no mysql support.
I commented out the FLAVORS+= dbase filepro mysql mysql_bundled postgresql iodbc in the /usr/ports/www/php4/Makefile and in the configure options added
--with-mysql=/usr/local and it worked.
Good Luck`
rodent at mighty dot co dot za
17-Apr-2002 04:46
`On windows 2000 installation I've had PHP simply hanging when running a PHP script.
To see exactly what is going wrong with PHP in the context of the IUSR_MACHINENAME account create a shortcut on your desktop to point to cmd.exe.
Right click on the shortcut, and select properties.
Then check the 'run as a different user' checkbox of the property pages of the shortcut.
Double click then shortcut, and you will be prompted for a user account to run the cmd.exe shell under.
Enter IUSR_MACHINENAME (replace machine name with the machine name of your system), and enter the password for the account.
If you don't know the password for the IUSR account you might need to go change it in Administrative Tools->Computer Management.
Enter the password, and you will be dropped into a command prompt.
Now run c:\php\php.exe -i and see if you can catch any error messages.
On my system it had a problem accessing c:\winnt\system32\browscap.ini which I was then able to sort out.
Running PHP as the Administrator user didn't give this problem, so being able to impersonate the IIS account was a very useful diagnostic tool.`
tanis22 at hotmail dot com
12-Nov-2001 11:01
`I figured out why i get this error with just a virtual directory and not the root:
8. Windows: I have installed PHP, but when I to access a PHP script file via my browser, I get the error: cgi error:
The specified CGI application misbehaved by not
returning a complete set of HTTP headers.
The headers it did return are:
---------------------
Look at the php.ini file and look for
doc_root =
set it to nothing so that it does not only look for that directory. I hope it helps people with IIS and PHP`
rggonzalez at iname dot com
09-Nov-2000 05:40
`Notes on installing PHP (3.x.x or 4.x.x) on a RedHat 6.x Linux box using glibc 2.1.x. When you install it as a DSO module for Apache (--with-apxs) with the standard RPM's from RedHat for Apache and MySQL, the httpd daemon dies without giving any error message, and without sending any message to the console.
From a comment by Rasmus Ledorf: this is caused "probably due to a glibc-2.1.x bug related to dynamically loading a library
linked against pthreads into a binary that isn't linked against
pthreads. Try it using --without-mysql and see if it works. If it does
then you know it is a mysql-related problem. To fix it you will need the
non-threaded mysql client rpm available from www.mysql.com".
You can also download the source code for MySQL and recompiled it statically, using this configuration options:
--with-client-ldflags=-all-static
--with-mysqld-ldflags=-all-static
You must then re-run the ./configure; make; make install in your PHP source tree to get the PHP shared module working with the new MySQL support.
Regards,
Rodolfo Gonzalez.
rggonzalez@iname.com`
fischer_dj at mailcity dot com
24-Aug-2000 09:29
`I've added detailed PWS, Perl, & PHP4 installation instructions for Win98 at FAQts.
http://www.faqts.com/knowledge-base/view.phtml/aid/5495/fid/336/lang/en`
add a note
Проблемы Сборки Вопросы по Базам Данных

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 10:36:09 2007 PST