php[world] in Washington, D.C.

Instalación

Esta sección contiene preguntas comunes sobre la forma de instalar PHP. PHP está disponible para casi cualquier OS (excepto para MacOS antes de OSX), y casi todos los servidores web.

Para instalar PHP, siga las instrucciones en Instalación y configuración.

  1. ¿Porqué Apache2 no debería ser utilizado con un MPM en un entorno de producción?
  2. Unix/Windows: ¿Donde debería ubicarse mi fichero php.ini?
  3. Unix: Instalé PHP, ¡pero con cada documento cargado recibo el mensaje 'Document Contains No Data'! ¿Qué está pasando aquí?
  4. Unix: Instalé PHP usando RPMS, ¡pero Apache no procesa los los documentos PHP! ¿Qué está sucediendo aquí?
  5. Unix: Apache fue parchado con el parche de extensiones de FrontPage, y de pronto PHP dejó de funcionar. ¿Acaso PHP es incompatible con las extensiones de FrontPage para Apache?
  6. Unix/Windows: Instalé PHP, pero cuando intento acceder a archivos PHP a través de mi navegador, obtengo la pantalla en blanco.
  7. Unix/Windows: Instalé PHP, pero cuando intento acceder a archivos PHP a través de mi navegador, obtengo el error de servidor HTTP 500.
  8. Varios sistemas operativos: Instalé PHP sin errores, pero cuando intento iniciar Apache, obtengo errores de símbolos indefinidos: [mybox:user /src/php5] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols: _compress _uncompress
  9. Windows: Instalé PHP, pero cuando intento acceder a archivos PHP a través de mi navegador, obtengo el error: cgi error: The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
  10. Windows: Seguí todas las instrucciones, ¡pero todavía no puedo hacer que PHP y el IIS funcionen juntos!
  11. Cuando ejecuto PHP como CGI con IIS, PWS, OmniHTTPD o Xitami, obtengo el siguiente error: Security Alert! PHP CGI cannot be accessed directly..
  12. ¿Cómo tengo la certeza de que mi php.ini está siendo encontrado y correctamente leído? Pareciera que no porque mis cambios no están siendo implementados.
  13. ¿Cómo agrego mi directorio de PHP a PATH en Windows?
  14. ¿Cómo hago al archivo php.ini disponible para PHP en Windows?
  15. ¿Es posible usar la negociación de contenidos de Apache (opción MultiViews) con PHP?
  16. ¿PHP se limita a procesar sólo métodos de peticiones GET y POST?
¿Porqué Apache2 no debería ser utilizado con un MPM en un entorno de producción?

PHP es pegamento. Es el pegamento utilizado para desarrollar buenas aplicaciones web uniendo docenas de bibliotecas 3rd-party y haciéndolas aparentar como una coherente a través de una interfaz lingual, intuitiva y fácil de estudiar. La flexibilidad y poder de PHP reside en la estabilidad y robustez de la plataforma en la que corre. REquiere de un OS, de un servidor web y de bibliotecas 3rd-party (todos correctamente funcionando) para combinarlos. Cuando cualquiera de estos deja de funcionar, PHP necesita formas de identificar los problemas y arreglarlos rápidamente. Cuando el marco de referencia base se hace más complejo al no tener las tareas de ejecución y los segmentos de memoria completamente separados y un fuerte entorno de pruebas por cada instancia a cubrir, apareceran deficiencias en el sistema de PHP.

Si desea utilizar un MPM por hilos, considere una configuración de FastCGI donde PHP este corriendo en su propio espacio de memoria.

Unix/Windows: ¿Donde debería ubicarse mi fichero php.ini?

Por defecto en Unix debería ser en /usr/local/lib lo que es igual a <install-path>/lib. Mucha gente querrá cambia resto al momento de compilar con el flag --with-config-file-path. Debería ser seteado, por ejemplo, con algo parecido:

--with-config-file-path=/etc
Y luego se copiaría el php.ini-development de la distribución a /etc/php.ini y sería editado acorde a los cambios locales deseados.

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

En Windows la ruta predeterminada para el fichero php.ini es el directorio Windows. Si está usando el servidor web Apache, php.ini es buscado en principio en el directorio de instalación de Apaches, por ej.C:\Archivos de programa\Apache Group\Apache. De esta forma se pueden utilizar distintos ficheros php.ini para diferentes versiones de Apache en la misma máquina.

Vea también el capítulo sobre el fichero de configuración.

Unix: Instalé PHP, ¡pero con cada documento cargado recibo el mensaje 'Document Contains No Data'! ¿Qué está pasando aquí?

Esto probablemente signifique que PHP está teniendo algún tipo de problema y realiza un volcado de memoria. Revise en el log de errores de su servidor para ver si éste es el caso, y después intente reproducir el problema con una pequeña prueba. Si sabe cómo usar 'gdb', será de gran ayuda cuando un backtrace pueda ser incluido en su reporte de bug para ayudar a los desarrolladores a localizar el problema. Si PHP es utilizado como módulo de Apache intente algo como:

  • Detener sus procesos httpd

  • gdb httpd

  • Detener sus procesos httpd

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

  • Luego indique la URL que causa el problema con su explorador

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

  • Si resulta en un volcado de memoria, gdb debería informárselo al instante

  • escriba: bt

  • Debería incluir su backtrace en su reporte de bug, el cual debería ser enviado a » http://bugs.php.net/

Si su script utiliza las funciones de expresiones regulares (preg_match() y similares), debería sersionarse que PHP y Apache fueron compilados con los mismos paquetes de expresiones regulares. Esto debería ocurrir automáticamente con PHP y Apache 1.3.x

Unix: Instalé PHP usando RPMS, ¡pero Apache no procesa los los documentos PHP! ¿Qué está sucediendo aquí?

Asumiendo que instaló tanto Apache como PHP desde paquetes RPM, se necesita descomentar, o agregar algunas o todas de las siguientes líneas en su fichero 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
Y agregar:
AddType application/x-httpd-php .php
... a las propiedades globales, o a las propiedades del VirtualDomain que desee que tenga añadido el soporte para PHP.

Unix: Apache fue parchado con el parche de extensiones de FrontPage, y de pronto PHP dejó de funcionar. ¿Acaso PHP es incompatible con las extensiones de FrontPage para Apache?

No, PHP trabaja bien con las extensiones de FrontPage. El problema radica en que dicho parche modifica varias estructuras de Apache en las que PHP confía. La recompilación de PHP (usando 'make clean ; make') luego de que el parche haya sido aplicado debería resolver el problema.

Unix/Windows: Instalé PHP, pero cuando intento acceder a archivos PHP a través de mi navegador, obtengo la pantalla en blanco.

Ejecute 'ver código fuente' en el navegador web y probablemente encontrará que puede ver el código fuente de su archivo PHP. Esto significa que el servidor web no envió el script PHP para su interpretación. Algo está mal en la configuración del servidor - chequéelo tantas veces sea necesario respecto de las instrucciones de instalación de PHP.

Unix/Windows: Instalé PHP, pero cuando intento acceder a archivos PHP a través de mi navegador, obtengo el error de servidor HTTP 500.

Algo falla cuando el servidor intenta ejecutar PHP. Para obtener un mensaje de error detallado, desde la línea de comandos, cambie al directorio que tiene el ejecutable de PHP (php.exe en Windows) y ejecute php -i. Si PHP tiene problemas al correr, el correspondiente error será impreso en pantalla, el cual le dará una pista sobre lo que debe hacer a continuación. Si obtiene una pantalla completa de códigos HTML (la salida de la función phpinfo()) es porque PHP está funcionando, y su problema puede estar relacionado a la configuración de su servidor, la cual debería corroborar.

Varios sistemas operativos: Instalé PHP sin errores, pero cuando intento iniciar Apache, obtengo errores de símbolos indefinidos:
[mybox:user /src/php5] root# apachectl configtest
 apachectl: /usr/local/apache/bin/httpd Undefined symbols:
  _compress
  _uncompress

Esto, en realidad, no tiene nada que ver con PHP, sino con las bibliotecas de cliente MySQL. Algunas necesitan --with-zlib , otras no. Esto también se trata en la FAQ de MySQL.

Windows: Instalé PHP, pero cuando intento acceder a archivos PHP a través de mi navegador, obtengo el error:
cgi error:
 The specified CGI application misbehaved by not
 returning a complete set of HTTP headers.
 The headers it did return are:

Este mensaje de error significa que PHP falló al intentar producir un retorno. Para poder ver un mensaje de error detallado, desde la línea de comandos, cambie al directorio que tiene el ejecutable de PHP (php.exe en Windows) y ejecute php -i. Si PHP tiene problemas al correr, el correspondiente error será impreso en pantalla, el cual le dará una pista sobre lo que debe hacer a continuación. Si obtiene una pantalla completa de códigos HTML (la salida de la función phpinfo()) es porque PHP está funcionando.

Una vez que PHP esté funcionando desde la línea de comandos, intente acceder al archivo PHP a través de su navegador nuevamente. Si continúa fallando podría ser por una de las siguientes razones:

  • Permisos de archivo en su script PHP, php.exe, php5ts.dll, php.ini o cualquier extensión PHP que esté intentando cargar son de tal que el usuario anónimo de internet ISUR_<machinename> no puede acceder a ellos.
  • El archivo no existe (o posiblememte no está donde cree, lo que es relativo a su directorio web raíz). Note que para IIS se puede tildar la casilla 'comprobar si el archivo existe' cuando setea el mapeo de scripts en el Administrador de Servicios de Internet para darse cuenta si eso es lo que realmente sucede. Si un archivo no existe, entonces el servidor devolverá un error HTTP 404. El IIS también brinda el beneficio adicional de encargarse de cualquier autenticación requerida por Ud., basado en los permisos NTLanMan en su archivo.
Windows: Seguí todas las instrucciones, ¡pero todavía no puedo hacer que PHP y el IIS funcionen juntos!

¡Asegúrese de que todos los usuarios que necesiten ejecutar PHP tengan los permisos para ejecutar php.exe! IIS utiliza un usuario anónimo que se crea en el momento en que éste es instalado. Este usuario necesita permisos para php.exe. Además, cualquier usuario autenticado necesitará permisos para poder ejecutar php.exe. Y para IIS4 se necesita indicarle que PHP es un intérprete. También le interesará leer esta FAQ.

Cuando ejecuto PHP como CGI con IIS, PWS, OmniHTTPD o Xitami, obtengo el siguiente error: Security Alert! PHP CGI cannot be accessed directly..

La directiva cgi.force_redirect debe equivaler a 0. Por defecto equivale a 1 por lo que debe asegurarse de que no este comentada (con un ;). Como todas las directivas, esto se configura en php.ini

Debido a que por defecto es 1, es crítico que esté seguro al 100% que se está leyendo el archivo php.ini correcto. Por favor lea esta FAQ para detalles.

¿Cómo tengo la certeza de que mi php.ini está siendo encontrado y correctamente leído? Pareciera que no porque mis cambios no están siendo implementados.

Para asegurarse que PHP está leyendo su php.ini, realice una llamada a phpinfo(). Cerca de la parte superior, habrá una lista llamada Configuration File (php.ini). Allí figurará en qué parte PHP está buscando php.ini y si se está leyendo o no. Si existe sólo el directorio de la ruta, entonces PHP no está leyéndolo, y debería moverlo dentro de dicho directorio. Si php.ini está incluido dentro de la ruta indicada, está siendo leído.

Si php.ini está siendo leído y PHP está corriendo como un módulo, entonces deberá reiniciar su servidor web luego de aplicar los cambios a php.ini

Vea también php_ini_loaded_file().

¿Cómo agrego mi directorio de PHP a PATH en Windows?

En Windows NT+ y Windows Server 2000+:

  • Vaya a Panel de Control y abra el icono Sistema (Inicio -> Configuración -> Panel de Control -> Sistema, o directamente Inicio -> Panel de Control -> Sistema para Windows XP/2003+)

  • Vaya a la pestaña Avanzado

  • Clic en el botón 'Variables de Entorno'

  • Revise la parte de 'Variables de Sistema'

  • Encuentre la entrada Path (de seguro tendrá que desplazarse para encontrarla)

  • Doble clic en la entrada Path

  • Ingrese su directorio de PHP al final de todo, con un ';' antes (por ej., ;C:\php)

  • Presione OK

En Windows 98/Me necesita editar el archivo autoexec.bat:

  • Abra el Bloc de Notas (Inicio -> Ejecutar y escriba notepad)

  • Abra el archivo C:\autoexec.bat

  • Localice la línea con PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;..... y agregue: ;C:\php en el final de la línea

  • Guarde el archivo y reinicie la máquina

Nota: Asegúrese de reiniciar luego de seguir los pasos de arriba para garantizar que los cambios a PATH se apliquen.

El manual de PHP solía promover el copiado de archivos dentro del directorio de sistema de Windows, esto es porque este directorio (C:\Windows, C:\WINNT, etc.) está por defecto en los sistemas de PATH. Copiar archivos dentro del directorio de sistema de Windows hace tiempo que ya no se utiliza y puede causar problemas.

¿Cómo hago al archivo php.ini disponible para PHP en Windows?

Hay varias formas de hacer esto. Si está usando Apache, lea sus instrucciones específicas de instalación (Apache 1, Apache 2), a menos que deba configurar la variable de entorno PHPRC:

En Windows NT, 2000, XP y 2003:

  • Vaya a Panel de Control y abra el icono Sistema (Inicio -> Configuración -> Panel de Control -> Sistema, o directamente Inicio -> Panel de Control -> Sistema para Windows XP/2003)

  • Vaya a la pestaña Avanzado

  • Clic en el botón 'Variables de Entorno'

  • Revise la parte de 'Variables de Sistema'

  • Clic en 'Nuevo' e ingrese 'PHPRC' como el nombre de variable y el directorio donde php.ini se encuentra como el valor de variable (por ej., C:\php)

  • Presione OK y reinicie la máquina

En Windows 98/Me necesita editar el archivo autoexec.bat:

  • Abra el Bloc de Notas (Inicio -> Ejecutar y escriba notepad)

  • Abra el archivo C:\autoexec.bat

  • Agregue una nueva línea al final del archivo: set PHPRC=C:\php (reemplace C:\php con el directorio donde se encuentre php.ini). Por favor note que la ruta no puede contener espacios. Por ejemplo, si instaló PHP en C:\Archivos de programa\PHP, debería ingresar C:\ARCHIV~1\PHP en su lugar.

  • Guarde el archivo y reinicie la máquina

¿Es posible usar la negociación de contenidos de Apache (opción MultiViews) con PHP?

Si los enlaces a archivos PHP incluyen la extensión, todo funciona perfectamente. Esta FAQ es sólo para aquellos casos en los que los enlaces a archivos PHP no incluyen la extensión y desea utilizar la negociación de contenidos para elegir archivos PHP desde una URL sin extensión. En este caso, reemplace la línea AddType application/x-httpd-php .php con:

AddHandler php5-script php
AddType text/html php
Esta solución no funciona para Apache 1 ya que el módulo de PHP no capta php-script.

¿PHP se limita a procesar sólo métodos de peticiones GET y POST?

No, es posible manejar cualquier método de peticiones, por, ej., CONNECT. El estado de respuesta apropiado puede ser enviado con header(). Si sólo los métodos GET y POST deberían ser manejados, se puede lograr con la siguiente configuración de Apache:

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

add a note add a note

User Contributed Notes 23 notes

up
3
per dot fikse at ipj dot no
9 years ago
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)
up
1
christianfelix at laszlo dot com
7 years ago
For Windows XP users

Just add php.ini to windows/system 32 and also save a copy in the setup folder e.g. c:/php/php.ini, c:/php5/php.ini,

You have to follow the suggestions, add to path, uncomment extensions and voila!!
up
1
gui dot priaulx at gmail dot com
7 years ago
When i first installed PHP 5.2 / 5.1 on Windows 2k3 server standard edition, i got error 404's on every page i tried to load, i then noticed that in the file extention configuration list, .php files where going to E:\PHP\\php5isapi.dll or something similar, the problem was the two back slashes, i'm not sure what their purpose is. After i changed it too one, PHP worked well for about 5 minutes then the Application poop started to crash and a whole new bag of problems fell open, but thats just observation if it helps anyone.
up
1
Curtis
7 years ago
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
up
1
Anonymous
7 years ago
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.
up
1
ssaxena at nriol dot com
4 years ago
Here are my struggle to get PHP 5.2.12 working on Windows XP SP3, IIS 5.1 (Please note Win XP SP3 has issue of FastCGI)

1. Dowloaded installer and installed in C:\Program Files\PHP as ISAPI module

---->Did not work

Added php5isapi.dll in ISAPI Filter and added the extension .php in Home Dir->Configuration
(For every setting change restarted IIS on cmd->iisreset)

---->Did not work

(And the Google was pointing to the Fast CGI issue; Don't know why microsoft has MS-FAST ! )
Uninstalled the PHP and cleaned up the folders, PATH environment variable & PHPRC, the IIS settings and registry entries and shut down(restart is different from shut down) the system to make it very clean

2. Reinstalled the PHP in C:\PHP as ISAPI and did the same as above in IIS
(For every setting change restarted IIS on cmd->iisreset)

---->Did not work

Uninstalled and cleaned up same as above and took a breath to make sure what I am doing wrong.
Shutdown the system.

3. Unzipped the php-5.2.12-Win32.zip and did the same as above (this time manually PATH variable and security permission for the PHP folder and following settings)

short_open_tag = On
error_reporting = E_ALL & ~E_NOTICE
display_errors = On
doc_root = "C:\Inetpub\wwwroot"
extension_dir = "C:\PHP\ext"
cgi.force_redirect = 0

---->Did not work

Uninstalled and cleaned up same as above
Shutdown the system.

4. Downloaded Microsoft Web Platform Installer 2.0 and select the PHP+Fast CGI+Windows Cache for PHP extension and Web Deployment Tools
restarted the system to take effect the settings

---->Did not work

Uninstalled and cleaned up same as above
Shutdown the system

5. Took the prev version of PHP php-5.2.4-Win32.zip unzip the folder and did the following changes:

short_open_tag = On
error_reporting = E_ALL & ~E_NOTICE
display_errors = On
doc_root = "C:\Inetpub\wwwroot"
extension_dir = "C:\PHP\ext"
cgi.force_redirect = 0

set the security permission as IIS_machinename with full access to the C:\PHP folder

------->IT GOT WOKRING

Hope people would be aware of php-5.2.12 and would love the php-5.2.4
up
1
joerg at fenin dot de
6 years ago
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/
up
1
charleslynch at xybersoftware dot com
6 years ago
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...
up
1
scott at chaisson dot net
6 years ago
Windows 2000 Server and IIS (SP4 and all patches):

After many frustrating hours of trying to figure out the install (again), It took a while, but here are a couple tips:

PHP working with IIS uses c:\winnt\php.ini

It doesn't matter what you set the path to, nor what you set the PHPRC environment variable to. After you get PHP running correctly in the installation folder (using php -i) copy the php.ini file into the c:\winnt folder.

Here's what worked for me:

- Add PHP path to System environment variable

- Add php5activescript.dll from http://snaps.php.net/ to the PHP folder, then Register it: "regsvr32 php5activescript.dll"

Set extension_dir and doc_root directives in PHP.INI:
  extension_dir = C:\WWW\PHP\ext
  doc_root = C:\WWW\Site
  cgi.force_redirect = 0

(the last cgi.force_redirect isn't required, but I like to set it anyway)

Copy the .INI file into WINNT folder

In IIS Manager, right-click "Default Web Site", Click "Home Directory",
  Click "Configuration", "Add" the ISAPI application:
    Executable: <your php install>\php5isapi.dll
    Extension: .php
    Limit to: GET,HEAD,POST
    Check: "Script Engine"
    Uncheck: "Check that file exists"

Finally: Set up an ISAPI filter:
  Click the "ISAPI Filters" tab,
  Filter Name: PHP
  Executable: <your php install>\php5isapi.dll

Notes: You don't have to set any of your folders as "Script source" folders. .PHP files aren't scripts, merely text files that require processing before being shipped off to the browser, which is what the ISAPI filter does.

Finally, working again.

Chase
up
1
Meiki67 skipthis at geemail
7 years ago
Had a hard day to MSI install 5.2.3 on WinXP with MySQL. I use a drive substitution (subst drive: path - in my case subst d: c:\drive_d) and installed PHP in D:\PHP - which in reality is C:\DRIVE_D\PHP.  To make a long story short - only after (1) changing all substituted D:\ back to C:\DRIVE_D and (2) resolving all DOS short names to Win long names PHP started to work. The first one is clear - the substitution works only for the active console user - not for services or IUSR. For the second one I have no explanation, since DOS short names should work systemwide - maybe Win handles them correctly but PHP not ?

BTW <?php phpinfo(); ?> was of tremendeous help

Meiki
up
1
emzeperx at emzeper dot hu
8 years ago
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.
up
1
jimo at mail dot azhsv dot com
10 years ago
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 wont 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)
up
0
john dot calder at manukau dot ac dot nz
6 years ago
WINDOWS 2003 and IIS.  BIG LESSON FOR ME was "don't mess with the optional components".
I had lots of trouble until I tried installing without asking for extras and then it was very smooth.
I have found no need to set up paths. 
I have found no need to configure IIS. 
I have found no need to change security on the PHP folder.

What works for me with Windows/IIS:

1.  You need to be logged-on as "administrator"

2.  Run  "php-5.2.6-win32-installer.msi"
Your ONLY action during this wizard is to select "IIS ISAPI" as the webserver.  Do NOT CHANGE anything else!  I am guessing that the optional extras apply only to Apache because after enabling them I see Apache-related error messages.

3.  Setup a test virtual directory as you would for an ASP or ASP.NET web app.  eg "phptest"
Then use notepad to create a test page eg "test.php"
<?php
phpinfo
();
?>

4.  In Internet Explorer, test with eg this address
http://localhost/phptest/test.php

IF this does not give you a beautiful page of details THEN start reading other advice on this page - especially helpful for me was the faq advice to test run "php.exe -i" from the command prompt.
up
0
knutw at sparhell dot no
7 years ago
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.
up
0
furrycod at hotmail dot com
9 years ago
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.
up
0
masternuthin diespammer at yahoo dot com
10 years ago
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.
up
0
jeff_graham at datacenterservices dot net
10 years ago
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)
up
0
nigel dot salt at hotmail dot com
10 years ago
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
up
0
peter dot mosinskisNOSPAM at csuci dot edu
11 years ago
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
up
-1
JUSTANOTHERUSER
9 years ago
<LimitExcept GET POST>
Deny from all
</LimitExcept>

Does not work with Apache2+ & PHP5 . Apache Refuses to start
up
-1
patrick hat paddyworks dot com
9 years ago
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.
up
-1
barry dot fagin at usafa dot af dot mil
9 years ago
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
up
-4
monroe at peoplego dot com
12 years ago
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
To Top