Archive for the ‘Uncategorized’ Category

Instalación de Apache, PHP y MySQL

Monday, March 23rd, 2009

Ahora siga estas instrucciones para instalar este programa, que coordina Apache, PHP y MySQL:

  1. Pulse en “next” hasta que le pida que introduzca el “server name” y “administrator’s email adress”.
  2. En “server name” ponga “localhost”. En “administrator’s email adress” ponga su email. Y el puerto no lo modifique (80 por defecto).
  3. Pulse en “next”. Ahora le pedirá que introduzca el “user name” y el “password”. Ponga el que usted quiera, esto sirve para acceder a nuestra base de datos.
  4. Pulse en “next”. Ahora acabará la instalación.
  5. Pulse en “Close”. Le aparecerá un ventana de ms-2, puede cerrarla.

Para comprobar su correcto funcionamiento abra su navegador (Internet Explorar, Mozilla…) e introduzca esta direccion (su dirección local) “http://localhost” . Si aparece una página donde pone “The AppServ Open Project…” es correcto todo.

Ahora el programa ha creado en su disco duro una carpeta llamada AppServ, la cual a su vez contiene: “Apache”, “PHP”, “MySQL” y “www”. La carpeta “www” es donde puede poner cuaquier archivo php para que sea ejecutado.

Normalmente todo lo anterior se realiza, para preparar la web antes de subirla al servidor, pero si usted va a trabajar directamente en el servidor web, puede seguir leyendo en el siguiente punto. (Asegúrese de que su servidor corre bajo Apache, PHP y tiene base de datos MySQL: un ejemplo de este tipo de servidor es www.tripod.lycos.es).

Instalación de un Portal PHP Nuke

Primero ha de descargarse los archivos que lo componen: puede descargárselo de este enlace directamente. Una vez descargado, extraiga (está en zip) los archivos a la anteriormente mencionada carpeta “www” dentro de “AppServ” en su disco duro. Ahora explicaré la configuración de los archivos:

  1. Abra su navegador web e introduzca esta dirección “http://localhost/phpMyAdmin”.
  2. Corrija los errores que aparecen en rojo, para ello, copie los mensajes de error en el “Google” y rápidamente dará con la solución. Aquí le explico los más usuales. El error que siempre sale al principio es el de la directiva $cfg. Para solucionarlo abra con el bloc de notas el archivo siguiente : su_disco_duro/AppServ/www/phpMyAdmin/congif.inc.php
  3. Busque (Ctrl+B) la siguiente linea: $cfg['PmaAbsoluteUri'] = ”; e introduzca esto entre las comillas http://localhost/phpMyAdmin de tal manera que quede así $cfg['PmaAbsoluteUri'] = ‘http://localhost/phpMyAdmin’; . Ya está solucionado el error. Ahora queda otro, el que dice que el root no tiene contraseña.
  4. Vuelva a la página “http://localhost/phpMyAdmin” (observe que si actualiza la página ya no sale el primer error), pulse en privilegios y luego pulse en editar (a la derecha de las filas root y localhost) . Ahora en el punto “Cambio de contraseña” pulse en la opción “contraseña” e introduzca una contraseña, reescríbala y pulse en “continúe”.
  5. Le saldrá un error, la pantalla aparece medio en blanco, debemos configurar otro archivo más. Abra de nuevo (con el bloc de notas) el archivo “congif.inc.php” y busque (Ctrl+B) esto: $cfg['Servers'][$i]['host'], le llevará a la sección donde especificar los datos por los que nos daba error. Entre las comillas de la fila password introduzca el password que ha introducido antes en los privilegios del phpMyAdmin. Guarde y cierre el archivo.
  6. Vaya a la página del phpMyAdmin (puede comprobar que todo funciona correctamente, sin errores), escriba nuke (por ejemplo) en el campo “crear una nueva base de datos” y pulse “crear”.
  7. Abra con el bloc de notas el archivo “su_disco_duro/AppServ/www/sql/nuke.sql” y seleccione todo, cópielo (Ctrl+C).
  8. Abra el phpMyAdmin, a la izquiera, seleccione la base de datos creada antes (nuke), pulse en la pestaña superior “SQL”, pegue (Ctrl+V) el texto antes copiado y pulse “continúe”.
  9. Abra con el bloc de notas el archivo “su_disco_duro/AppServ/www/html/config.php”
  10. Rellene los siguientes datos: en el “dbpass”, a la derecha, entre las comillas, ponga el password que puso inicialmente en el phpMyAdmin y en “dbname” ponga ‘nuke’ (si está ejecutando el php-nuke online en el “host” ponga su servidor). Guarde y cierre el archivo.
  11. En su navegador ponga “http://localhost/html/admin.php” y si aparece un portal PHP Nuke, lo ha hecho todo correctamente.
  12. Configure su superusuario, ponga el usuario, password, email… que quiera. Aquí lo único que puede que no sepa es la página de inicio, debe poner “http://localhost”.

Ya tiene su propio portal PHP Nuke, lo puede configurar como usted quiera. Disfrútelo.

Fuente: http://www.desarrolloweb.com/articulos/1765.php

Compilando Apache y PHP para Linux

Monday, March 23rd, 2009

En este taller vamos a describir un poco por encima los pasos que hay que seguir para tener Apache + PHP en tu máquina Linux.

  • Nos ponemos como root para
    empezar a trabajar
  • Bajamos los fuentes de
    Apache y PHP y los descomprimimos
  • Compilamos Apache con los módulos necesarios
  • Compilamos PHP con el soporte que queramos
  • Probamos Apache y PHP

Obteniendo los permisos necesarios para compilar Apache
y PHP

Obtenemos permisos de root con el comando su
-l:

[shell]$ su -l
Password:
[shell]#

Notar que cambia el signo $
por el #, con este usuario nos
limitaremos a hacer labores de administración, podemos dañar el sistema.

Preparando las fuentes para ser compiladas

Bajamos las fuentes de los programas de
href=”http://www.php.net/”>http://www.php.net/
y
href=”http://www.apache.org/”>http://www.apache.org/
.

Descomprimimos las fuentes:

[shell]# gunzip apache_1.x.x.tar.gz
[shell]# gunzip php-4.0.x.tar.gz
[shell]# tar -xvf apache_1.x.x.tar
[shell]# tar -xvf php-4.0.x.tar

Preparamos Apache para ser compilado:

[shell]# cd apache_1.x.x
[shell]# ./configure --enable-module=so --enable-module=all
--enable-shared=max

Preparamos PHP para ser compilado:

[shell]# cd ../php-4.0.x
[shell]# ./configure --with-mysql
--with-apxs=/usr/local/apache/bin/apxs

Aquí es el momento en el que podemos añadir todos
los módulos que queramos, por ejemplo, para añadir el soporte para GD

[shell]# ./configure --with-mysql
--with-apxs=/usr/local/apache/bin/apxs --with-gd=shared

Cualquier cosa, la añadiremos como shared, que así no crece el binario
)
También podemos añadir PostgreSQL y GD

[shell]# ./configure
            --with-apxs=/usr/local/apache/bin/apxs --with-gd=shared --with-pgsql=shared

Compilamos Apache y PHP y los hacemos funcionar

Compilamos e instalamos Apache y lo probamos:

[shell]# cd ../apache_1.x.x
[shell]# make -j5 && make install && echo "Bien compilado e
instalado"

Puesto que el operador && no ejecuta el siguiente comando si el anterior no se acabó con éxito, he añadido
el tercero para tener más control.

Probamos que Apache funciona bien:

[shell]# /usr/local/apache/bin/apachectl start

Si todo está bien, pondrá algo así como httpd
started.
Compilamos e instalamos PHP y lo probamos:

[shell]# cd ../php-4.x.x
[shell]# make -j5 && make install && echo "Bien compilado e
instalado"

Vamos a probar PHP, creamos un archivo con <?php phpinfo() ?>:

[shell]# cat > /usr/local/apache/htdocs/info.php
[shell]# <?php phpinfo() ?>
[shell]# [Control-D]
[shell]# lynx http://localhost/inf

Si vemos la información de PHP, entonces ha funcionado.

Si has llegado hasta aquí, entonces es
que todo ha funcionado, entonces, sólo queda recomendar el
href=”http://www.php.net/manual/es”>Manual de
PHP.net

Documento redactado por
href=”http://www.forosdelweb.com/usuario.asp?usr=Ferdy”>Ferdy

gracias a
href=”http://www.forosdelweb.com/usuario.asp?id=1646″>Herminio
Heredia Santos
para Maestros del Web

Fuente: http://www.maestrosdelweb.com/editorial/apaphp/

¿Qué nos espera con PHP 6?

Monday, March 23rd, 2009

Existen varios puntos para tomar en cuenta acerca de PHP en el futuro, en el presente artículo hablaremos un poco acerca del impacto que pueden tener estos puntos para los desarrolladores.

El núcleo central de los desarrolladores de PHP tuvieron un encuentro en París el 11 de Noviembre de 2005 para discutir hacia donde marcharía PHP en el futuro.

La transcripción completa del encuentro es una lectura fascinante, pero leerlo todo es un esfuerzo considerable. Por eso, os presentamos aquí los puntos clave que surgieron en la reunión y qué impacto pueden tener sobre vosotros, como desarrolladores.

Antes de empezar es importante que quede clara una cosa: lo que aquí podáis leer no está garantizado de ninguna manera al 100% que se incorpore a PHP 6. Aún así, podemos entender la información de las transcripciones como el estado actual de las decisiones sobre un montón de cosas en el equipo de PHP.

Unicode

El soporte de Unicode, en estos momentos, puede activarse bajo petición. Esto equivale a que PHP tenga que almacenar las variantes tanto Unicode como no-Unicode de nombres de clases, métodos y funciones en las tablas de símbolos.

En resumen – usa más recursos. La decisión es hacer que los ajustes de Unicode afecten a todo el servidor, y que no sean bajo petición. Desactivar Unicode allí donde no es necesario puede mejorar el rendimiento, y se ha detectado que algunas funciones de cadena pueden ser hasta un 300% más lentas y que aplicaciones completas pueden ser un 25% más lentas por este motivo.

La decisión para moverlo al php.ini en mi opinión, quita el control de las manos al usuario, y lo pone en las del Host Web. Si compilas PHP tú mismo, o eres responsable de ello en tus servidores, puede que estés interesado en saber que PHP 6 va a requerir las bibliotecas ICU (esté Unicode activado o desactivado).

El sistema compilado se paralizará sin las bibliotecas ICU necesarias no son encontradas. En resumidas cuentas, tendrás que instalar otra cosa más cuando quieras compilar PHP.

Register Globals es retirado

Decid adiós, amigos, esto finalmente se acaba. Ya no será un ajuste del fichero ini, y si se encuentra aparecerá un error E_CORE_ERROR, llevándote a la documentación sobre porqué es “malo”.

Esto significa que PHP 6 acabará con todos los scripts de la era de PHP 3 (o cualquier script que utilice globales registradas) sin otra opción que volver a escribirlos desde cero. Es una decisión dura, pero tenía que hacerse.

Las Magic Quotes también desaparecen

La característica de las “magic quotes” de PHP se elimina, y al igual que con register globals provocará un error E_CORE_ERROR si se encuentra en alguna parte. Esto afectará a magic_quotes, magic_quotes_sybase y magic_quotes_gpc.

El modo seguro, también eliminado

¡Esto puede que les guste a los desarrolladores que tienen web hosts que insisten en el modo seguro! Pero ahora desaparecerá por completo, también provocando un error E_CORE_ERROR si se encuentra.

La razón es que aparentemente daba una idea errónea, implicando que hacía a PHP seguro, cuando en realidad no mejoraba en nada la seguridad. open_basedir se conservará, (afortunadamente).

‘var’ significará lo mismo que ‘public’

PHP4 usaba ‘var’ entre las clases. PHP5 (en su decisión OO) casusaba que esto mostrara una advertencia bajo E_STRICT. Esta advertencia será retirada en PHP6, y en su lugar ‘var’ significará lo mismo que ‘public’.

Es una buena decisión, pero si alguien ha actualizado sus scripts para que funcionen bajo E_STRICT en PHP5 será redundante para ellos.

Return by Reference dará un error

Tanto $foo =& new StdClass() como function &foo producirán ahora un error E_STRICT.

El modo de compatibilidad zend.ze1 eliminado

ze1 intentó siempre conservar el viejo comportamiento de PHP4, pero aparentemente “ni siquiera funciona al 100%”, así que será eliminado por completo y dará un error E_CORE_ERROR si se detecta.

Soporte de Freetype 1 y GD 1 abandonado

Se elimina el soporte para estas (muy, muy antiguas) bibliotecas.

dl() sólo se mueve a SAPI

Cada SAPI registrará el uso de esta función como se requiera, sólo CLI y las SAPIs integradas harán esto desde ahora. No estará disponible en otro lugar.

FastCGI siempre activado

El código de FastCGI será renovado y estará siempre disponible para la CGI SAPI, no podrá ser desactivado.

Register Long Arrays eliminado

¿Recordáis las globales HTTP_*_VARS de hace tiempo? Bueno, si aún no estás usando $_GET, $_POST, etc – empieza a hacerlo ya, porque esta opción para permitir long arrays se elimina (y dará un error E_CORE_ERROR).

Movimientos de las Extensiones

Las extensiones XMLReader y XMLWriter serán desplazadas al núcleo de la distribución y estarán activadas por defecto.

La extensión ereg se mueve a PECL (y será eliminada de PHP). Esto significa que no se permitirá desactivar PCRE. Esto allanará el camino para la nueva extensión de expresiones basada en ICU.

La extensión tremendamente útil Fileinfo se desplaza al núcleo de la distribución y estará activada por defecto.

¿Qué otros puntos consideran ustedes que deben tomarse en cuenta con PHP en el futuro?

Este artículo fue publicado originalmente en phpsolmag.org por Richard Davey.

Fuente: http://www.maestrosdelweb.com/editorial/php6/

Gestores de contenido que aprovechan los aceleradores PHP

Monday, March 23rd, 2009

Como mencionaba en un post anterior, los aceleradores de PHP cuentan con un espacio exclusivo para almacenar variables (datastore) dentro de la memoria compartida. Este espacio es aprovechado por algunos gestores de contenido ya sea de forma nativa o con ayuda de plugins.

La idea de usar este espacio es evitar hacer (varias) consultas a la base de datos, dejando los resultados almacenados en la memoria del acelerador.

vBulletin

A partir de la versión 3.7 ya cuenta con soporte nativo para APC, XCache, Memcache o archivos. Tan solo hay que editar el archivo ./includes/config.php, cambiando el valor de $config['Datastore']['class']:

@import url(http://www.maestrosdelweb.com/wp-content/plugins/syntax-highlighter/Styles/SyntaxHighlighter.css);

  1. // ****** DATASTORE CACHE CONFIGURATION *****
  2. // Here you can configure different methods for caching datastore items.
  3. // vB_Datastore_Filecache  - to use includes/datastore/datastore_cache.php
  4. // vB_Datastore_APC - to use APC
  5. // vB_Datastore_XCache - to use XCache
  6. // vB_Datastore_Memcached - to use a Memcache server, more configuration below
  7. $config['Datastore']['class'] = ‘vB_Datastore_XCache’;
 // ****** DATASTORE CACHE CONFIGURATION *****
 // Here you can configure different methods for caching datastore items.
 // vB_Datastore_Filecache  - to use includes/datastore/datastore_cache.php
 // vB_Datastore_APC - to use APC
 // vB_Datastore_XCache - to use XCache
 // vB_Datastore_Memcached - to use a Memcache server, more configuration below
$config['Datastore']['class'] = ‘vB_Datastore_XCache’;

Si todavía usan vB 3.6.X hay un plugin para activarlo con XCache y otro más para APC (probablemente deberían actualizar vB ;) ). Un plugin muy recomendado es este otro que guarda en el datastores toda las plantillas de los estilos (style templates) de vBulletin.

Mediawiki

Mediawiki (del que ya hemos reseñado un poco) es otro CMS que soporta los datastores desde hace bastante tiempo (versión 1.5), es compatible con eAccelerator, mmTurck, APC, XCache o Memcache. Para activar el uso de los datastores, solo falta cambiar el valor de una variable en LocalSettings.php:

@import url(http://www.maestrosdelweb.com/wp-content/plugins/syntax-highlighter/Styles/SyntaxHighlighter.css);

  1. ## Shared memory settings
  2. $wgMainCacheType = CACHE_ACCEL;
## Shared memory settings
$wgMainCacheType = CACHE_ACCEL;

Wordpress

Con la ayuda de plugins se puede activar el Object Cache de Wordpress:

Para activar cualquiera de estos plugins se necesita grabarlos como ./wp-content/object-cache.php, no dentro de la carpeta ./wp-content/plugins/. Desde la versión 2.5 de Wordpress, en el Object Cache se almacenarán los resultados de todas las consultas a la base de datos (posts, comentarios, categorìas, etc…) en este espacio, si tu blog no tiene muchos contenidos y la memoria RAM del servidor te lo permite, es posible hacer que blog no realize consultas a la base de datos y sea siendo generado dinámicamente. Muy diferente al caso de usar WP_Cache que en el que blog termina siendo estático.

Otro plugin interesante es una modificación de WP-SuperCache para que en lugar de guardar las páginas en el disco, lo haga en la memoria del acelerador. Obviamente esto tomará mucho más espacio que solo guardar los objectos en la memoria, pero sin duda alguna el blog cargará mucho más rápido.

phpBB

phpBB 3.0.x cuenta con un sistema que le permite definir que sistema de caché usar, los modules ACM como les denominan ellos, en el paquete oficial de phpBB ya viene configurado para usar un caché basado en archivos. Los equivalentes para APC, eAcclerator, Memcache o XCache se pueden descargar desde el foro de php, se requiere estar registrado para ver el archivo de descarga (desearíamos no fuera así).

Según el sistema que elijas, subes el archivo a la carpeta /includes/acm/ dentro de la instalación de phpBB y luego editas el config.php de dicha instalación:

@import url(http://www.maestrosdelweb.com/wp-content/plugins/syntax-highlighter/Styles/SyntaxHighlighter.css);

  1. // Solo define uno, el que vayas a usar.
  2. $acm_type = ‘apc’; // para usar APC
  3. $acm_type = ‘eaccelerator’; // para usar eAccelerator
  4. $acm_type = ‘memcache’; // para usar Memcache (configuración adicional dentro de acm_memcache.php)
  5. $acm_type = ‘xcache’; // para usar XCache
// Solo define uno, el que vayas a usar.
$acm_type = ‘apc’;   // para usar APC
$acm_type = ‘eaccelerator’;  // para usar eAccelerator
$acm_type = ‘memcache’;  // para usar Memcache (configuración adicional dentro de acm_memcache.php)
$acm_type = ‘xcache’;  // para usar XCache

Vale aclarar que esto va a guardar en caché tanto plantillas como variables globales y consultas a base de datos, si no cuentas con mucha memoria RAM tal vez debas considerar dejar fuera del cache las consultas a la base de datos. La siguiente versión de phpBB (nombre código Ascraeus) irá un paso adelante al permitir mezclar varios sistemas de cache según el tipo de objeto.

Drupal

Drupal cuenta con el modulo Cache Router, para almacenar objectos en la memoria de APC, XCache, Memcache o en archivos; y es compatible con Drupal 5.x y 6.x. En Achieve Internet escribieron una buena guía sobre cual configuración usar de Cache Router, dependiendo del tipo de servidor con el contemos: shared, VPS, dedicado o con múltiples servidores, incluso. Los conceptos de esta guía aplicarían para cualquier CMS, por cierto ;) .

Joomla

Aunque Joomla tiene la mala fama de ser el Windows de los Gestores de contenidos, aún hay muchísimos sitios usándolo. Para Joomla existe el componente PageCache que guarda las páginas en la memoria de ACP, eAccelerator, Memcache, XCache, en la base de datos o en archivos; Lo malo es que solo es compatible con Joomla 1.0.x, si usan Joomla 1.5 deberán conformarse con el sistema de cache que ya viene integrado. Otra alternativa compatible con Joomla 1.0. y 1.5 es el componente Query Cache que también es compatible con los aceleradores de PHP.

Aunque no se debe esperar una mejora espectacular ni mágica al usar alguna de estas soluciones, a la larga ahorrar consultas a la base de datos resulta en un beneficio. Yo soy más de la idea que solo debe mantenerse en caché del acelerador los objetos más usados del gestor, almacenar todos los contenidos requiere mucha memoria RAM que podría ser necesaria para Apache y resultar contraproducente.

Fuente: http://www.maestrosdelweb.com/editorial/gestores-de-contenido-que-aprovechan-los-aceleradores-php/

Cómo publicar páginas PHP en Internet Information Services

Monday, March 23rd, 2009

Normalmente las páginas PHP son procesadas por servidores Apache, pero qué pasa si no tenemos los recursos necesarios para instalarlo o sólo contamos con una computadora y en ella instalado el servidor web de Windows, IIS. A continuación, se describirán una serie de pasos útiles para realizar esta configuración.

En nuestro ejemplo utilizamos un servidor Windows 2003 con IIS 6.0 previamente instalado, que se configurará para ejecutar páginas desarrolladas con PHP5.

Instalación de las librerías PHP

Antes que nada debemos bajar la última versión de PHP para Windows, disponible para descargar en la página oficinal. Descargado el archivo lo ejecutamos para iniciar. En el proceso es importante destacar la configuración de algunas ventanas de la manera siguiente:

La primera y segunda ventana de la instalación contienen la bienvenida y los términos legales, respectivamente, por lo que no son de relevancia para nuestro objetivo; podremos pasarlas sin preocupación. A partir de la tercera comenzaremos a puntualizar.

Debemos seleccionar la complejidad del desarrollo de la instalación. Seleccionemos “Standard” y hagamos clic en el botón “Next” para continuar.

Paso 1

Será necesario configurar durante la instalación nuestro servidor de correo saliente, SMTP y la dirección de correo electrónico del administrador del sitio. Esta configuración se almacena en el archivo “php.ini” que está ubicado en la carpeta “C:\Windows\” y que podremos modificar cuando queramos.

Paso2

Lo siguiente será seleccionar el servidor web que estamos utilizando. Como mencionaba al inicio, en nuestro ejemplo utilizamos Internet Information Services 6.0.

Paso3

Al finalizar la instalación es probable que aparezcan algunos mensajes de Windows Script Host que debemos aceptar sin preocupación alguna.

Seguridad en directorios

Estando instaladas las librerías será necesario configurar la seguridad NT de algunos archivos para que el IIS los pueda manipular y mostrar nuestras páginas.

Dentro de la carpeta “\PHP”, o donde se ha instalado PHP para Windows, debemos permitirle el acceso al usuario “IUSR_” de la siguiente forma:

  • Lectura y escritura en las carpetas: “\PHP\sessiondata\” y “\PHP\uploadtemp\
  • Lectura y ejecución en los archivos: “\PHP\php-cgi.exe” y “\PHP\php5ts.dll
  • Lectura en el archivo “C:\Windows\php.ini

Es válido aclarar que el usuario “IUSR_” lo crea Windows al instalar el IIS y se utiliza para ponerle un nombre a las peticiones anónimas que se hacen al servidor web. Sustituya <NombreDeSuPC> por el nombre de su ordenador en la red y obtendrá el nombre completo del usuario anónimo de su equipo.

Este paso sólo es necesario si nuestra partición de sistema o donde instalamos PHP está formateada con el sistema de archivos NTFS. En caso contrario lo omitimos y vamos al siguiente epígrafe.

Configuración de Internet Information Services

Ya estamos a punto de ver nuestras páginas PHP mostrándose en IIS, sólo nos falta configurarlo para que utilice el CGI correspondiente.

Para esto abriremos la consola de administración de IIS ubicada en Herramientas Administrativas dentro del Panel de Control de Windows, y una vez abierta hagamos clic derecho en la carpeta “Extensiones de Servicio Web” y del menú contextual seleccionemos la opción “Agregar nueva extensión de Servicio Web”, como se muestra en la imagen:

Paso4

Aparecerá una ventana para agregar la nueva extensión. En el nombre de la extensión podemos escribir cualquiera que la identifique, por ejemplo PHP. Luego, haciendo clic en el botón “Agregar” seleccionemos el archivo “php-cgi.exe” que está ubicado en la carpeta donde instalamos las librerías de PHP (por defecto C:\PHP\). Marquemos la opción “Establecer el estado de extensión a Permitido” para indicarle a IIS que active este CGI para su uso.

Paso5

Después de realizar estos pasos nuestro IIS está apto para procesar archivos PHP. Algo muy importante a puntualizar es que debemos agregar a las páginas predeterminadas de nuestro sitio Web el elemento “index.php”.

Para evitar que el IIS nos devuelva un error cuando intentemos acceder a nuestros sitios PHP sin escribir una página específica, por ejemplo http://www.miempresa.com/ . Esto se configura en la solapa Documentos de las propiedades de nuestro sitio web, como se muestra en la imagen que aparece a continuación.

Paso6

Con IIS configurado para procesar páginas PHP podremos publicar sitios completos desarrollados en este lenguaje. Utilizando como complemento el artículo “ODBC y PHP en 7 pasos” será posible leer/guardar los datos de nuestra aplicación web en servidores Microsoft SQL Server hasta sencillas bases de datos de Microsoft Access.

Por otro lado, si tenemos la posibilidad de utilizar un servidor MySQL nuestro Internet Information Services estará apto para soportar algunos CMS como Joomla o Drupal.

Fuente: http://www.maestrosdelweb.com/editorial/como-publicar-paginas-php-en-internet-information-services/

Aceleradores de PHP

Monday, March 23rd, 2009

En cada petición que se haga a un servidor web que use PHP, este compilará cada archivo necesario para generar la página solicitada. Este proceso de compilación se repite una y otra vez por cada petición. ¿Se imaginan la cantidad de tiempo que podríamos ahorrar si este proceso no tuviera que ser repetido? PHP Logo

Pues precisamente esa es la función de un «Acelerador de PHP», tomar el script(s) ya compilado, guardarlo en una memoria compartida y usarlo la próxima vez que se solicite este script, «compila una vez, corre muchas veces». El tiempo, y por tanto mejora del rendimiento de un servidor, depende principalmente de la complejidad de la aplicación php y memoria disponible para almacenar los scripts ya compilados.

Dada la forma en que funcionan estos «aceleradores», no en cualquier servidor se pueden instalar. Necesitas que PHP funcione como módulo de Apache (o cual sea estés usando) o enFastCGI, ya que desde CGI no va a funcionar la memoria compartida entre procesos. Apache también debe estar configurado, en el caso de usar php como módulo, para funcionar con un proceso y múltiples hilos (prefork), ya que con múltiples procesos e hilos (worker) estos aceleradores no se llevan bien, generando los odiosos mensajes “PHP has encountered an access violation at XXXXXXX”.

En un VPS con poca memoria RAM (menos de un 512MB) por la que compiten Apache y Mysql, es difícil que un acelerador pueda lograr buenos resultados junto a una aplicación grande. Yo solo los he usado en servidores dedicados con al menos un 1GB de RAM disponible.

Alternative PHP Cache (APC)

APC fue el primer acelerador que probamos con Maestros del Web, logramos bajar el tiempo de respuesta del sitio de 600ms a 400ms. APC es completamente gratuito y open source, un punto que habla muy bien de APC es que en PHP6 será incluido dentro del core de PHP.

APC incluye un script con el que puedes consultar estadísticas sobre el rendimiento de APC y el uso de la memoria, es algo que me gusta comparado con otros aceleradores:


clic para agrandar

En internet hay bastantes tutoriales de como instalar APC en diferentes entornos, para quienes usan Centos con WHM/Cpanel seguro les interesará seguir esta guía.

XCache

XCache es el segundo y actual acelerador de php que usamos con nuestros servidores, principalmente por las recomendaciones que nos dieron en el foro de optimización de servidores en vBulletin.com. Un punto a destacar de XCache es que lo ha escrito uno de los desarrolladores de Lighttpd, servidor web que tiene la fama de ser mucho más rápido al enviar contenido estático, comparado con Apache.

XCache también cuenta con un panel de control y de estadísticas, aunque comparado con el de APC es mucho menos visual:


clic para agrandar

XCache se ha ganado la fama de funcionar siempre con nuevas versiones de PHP (según dicen el soporte para PHP 5.3 ya está hecho), o al menos antes que los demás aceleradores, pero por alguna razón con PHP 5.2.6 en nuestros servidores fue demasiado inestable. Si usan Centos y WHM/Cpanel, acá está la guía que nosotros seguimos para instalar XCache.

Hablando de un comparación rendimiento entre APC y XCache, realmente no percibimos una diferencia notoria. Pero ya que los desarrolladores de vBulletin nos recomendaron más XCache, nos cambiamos a este.

eAccelerator

Nosotros no hemos probado eAccelerator en nuestros servidores, pero aún parece ser una buena opción que cuenta con bastantes seguidores. eAccelerator ya viene configurado dentro de las opciones de CPanel para Apache/PHP, para los que no quieran quebrase la cabeza instalando un acelerador desde los fuentes ;)

Es difícil decir cual de estos tres aceleradores de php es mejor, depende mucho del hardware, la configuración del software instalado y la aplicación(es) que se esté usando. Por ejemplo alguien comparó Drupal con estos 3 aceleradores y eAccelerator le funciono mejor, alguien más con Zend Framework dice que APC es mejor.

¿Cuanta memoria asignar para guardar los php ya compilados? Depende de cuantos archivos tenga tu CMS. En nuestros servidores corren varios CMS’s entre vBulletin, Wordpress, MediaWiki y OpenAds; para lo que destinamos entre 60MB a 100MBs de RAM. Hay que recordar que si solo se tiene un servidor, hay que dejar memoria disponible para Apache, Mysql y el sistema operativo. Nosotros empezamos probando con 32MBs de memoria para acelerador, y la fuimos incrementando hasta que consideramos que buena parte del CMS estaba cacheado.

Estos tres aceleradores también cuentan con un espacio exclusivo para variables (datastorage), varios CMSs aprovechan este espacio para ahorrar algunas consultas a la DB almacenando allí datos bastante comunes, como las preferencias y configuraciones del gestor; a este espacio si mucho le hemos asignado unos 5MBs. Los datos del uso de la memoria del acelerador siempre pueden se consultar desde el panel de control que cada uno tiene.

Quién esté interesado en instalar un acelerador de PHP debería probar más de uno, evaluar el rendimiento y estar pendientes del error log, cada uno de estos tiene a ser inestable en diferentes formas. Con Foros del Web, si no usáramos un acelerador de php, es casi seguro que necesitaríamos un servidor extra durante los picos de tráfico.

Otras opciones

Los tres aceleradores de php que acá mencionamos no han sido los únicos que existen:

  • Zend Platform: Más que un acelerador de PHP es toda una plataforma de herramientas de optimización, caché y monitoreo para PHP. El hecho de que sea un producto comercial, lo deja fuera de mi lista de «por probar».
  • ionCube PHP Accelerator (PHPA): Fue la primera alternativa gratuita para mejorar el rendimiento de PHP, la competencia al Zend Cache (comercial) de aquel entonces. Actualmente su desarrollo fue avandonado.
  • Turck MMCache: Es el código original de donde más tarde saldría eAccelerator (como un fork de este), aún cuando hoy está descontinuado hay personas que lo siguen usando (por sistemas heredados).
  • Zend Optimizer: Otro producto no código abierto, sirve principalmente para correr aplicaciones comerciales y codificadas con Zend Guard. Incluye un optimizador de código que en teoría mejora mejora el rendimiento de las aplicaciones, pero de acuerdo a lo que he leído, tiene muchos conflictos de estabilidad con los aceleradores de php. Nadie recomienda su uso real, a menos que se tenga un script codificado.

¿Alguien ha usado uno de estos aceleradores de PHP? ¿Cuál les ha funcionado mejor con su sitio? La verdad, al final todo esto se convierte en un proceso de prueba y error.

Fuente: http://www.maestrosdelweb.com/editorial/aceleradores-de-php/

Manejando formularios con Flash y PHP

Monday, March 23rd, 2009

Este tutorial nos ayudará a realizar un formulario a través de flash que se enviará por correo utilizando el soporte de PHP y la función de mail del servidor.

Para
este formulario, necesitaremos un servidor con soporte PHP y la función
mail activada. ¿Como sabemos si tenenos dicha función?, simple.

Crea un nuevo archivo PHP (“send.php”) y pones el siguiente código.

Código:

<?php
mail("tuCorreo@tuServidor.com", "Probando Ando =)", "Hola Hola!!");
?>

Súbelo a tu servidor y pruébalo www.tuServidor.com/send.php,
Si todo esta bien te saldrá una pagina en Blanco en el navegador y
a tu casilla llegara dicho correo.

Formulario PHP Flash

Bien,
Una vez comprobado esto seguimos.

Primero trabajaremos el Fla:

Creamos
una nueva película, sobre el escenario creamos 4 campos de texto de
entrada InputText y les damos nombre de instancia, y creamos 2 botones “enviar_btn” y “borrar_btn”

Crearemos
2 funciones una para enviar las variables a PHP y otra función para
borrar los datos del formulario.

Función enviar:

Código:

enviar = function () {
    if (email_txt.text.length && nombre_txt.length && titulo_txt.length && mensaje_txt.length) {
        if (email_txt.text.indexOf("@") != -1 && email_txt.text.indexOf(".") != -1) {
            form_lv = new LoadVars();
            form_lv.nombre = nombre_txt.text;
            form_lv.mail = email_txt.text;
            form_lv.mensaje = mensaje_txt.text;
            form_lv.titulo = titulo_txt.text;
            form_lv.sendAndLoad("http://www.tmeister.net/send.php", form_lv, "POST");
            mensaje_txt.text = "Enviando Mensaje..";
            nombre_txt.text = "";
            email_txt.text = "";
            titulo_txt.text = "";
            form_lv.onLoad = function() {
                if (this.estatus == "ok") {
                    mensaje_txt.text = "Tu mensaje fue enviado...";
                    nombre_txt.text = "";
                    email_txt.text = "";
                    titulo_txt.text = "";
                } else {
                    mensaje_txt.text = "Problemas con el servidornIntentalo de Nuevo";
                }
            };
        } else {
            email_txt.text = "Correo Invalido";
        }
    } else {
        email_txt.text = "Dato Necesario";
        nombre_txt.text = "Dato Necesario";
        titulo_txt.text = "Dato Necesario";
        mensaje_txt.text = "Dato Necesario";
    }
};

Código:

if (email_txt.text.length && nombre_txt.length && titulo_txt.length && mensaje_txt.length)

Con esto comprobamos que al presionar el boton todos los campos de texto no
estén vacíos, si esta condición no se cumple en los campos
aparecerá el texto “Dato Necesario”;

Código:

if (email_txt.text.indexOf("@") != -1 && email_txt.text.indexOf(".") != -1) {

Esta comprobación revisa que el mail introducido tenga la @ y
un punto .;

Si ambas condiciones son ciertas creamos una instancia de la clase LoadVars
y asignamos variables para enviar a PHP

Código:

form_lv_lv = new LoadVars();
form_lv.nombre = nombre_txt.text;
form_lv.mail = email_txt.text;
form_lv.mensaje = mensaje_txt.text;
form_lv.titulo = titulo_txt.text;
form_lv.sendAndLoad("send.php", form_lv, "POST");
    mensaje_txt.text = "Enviando Mensaje..";
}

Una vez ejecutado el Script PHP y si todo salio bien, este, regresara una variable
llamada status que tomaremos con el evento onLoad

Código:

form_lv.onLoad = function() {
                if (this.estatus == "ok") {
                    mensaje_txt.text = "Tu mensaje fue enviado. nGracias.... =)";
                    nombre_txt.text = " ";
                    email_txt.text = " ";
                    titulo_txt.text = " ";
                } else {
                    mensaje_txt.text = "Problemas con el servidornIntentalo de Nuevo";
                }
            };

Función borrar:

Con esta función solo borraremos los datos que tengan los campos de texto.

Código:

borrar = function () {
    nombre_txt.text = " ";
    email_txt.text = " ";
    mensaje_txt.text = " ";
    titulo_txt.text = " ";
};

Esto no necesita mucha explicación =P

Por ultimo asignamos dichas funciones a los eventos de los botones

Código:

  enviar_btn.onRelease = enviar;
  borrar_btn.onRelease = borrar;

Y esto es todo en Flash.. Seguimos con el PHP..

Código:

<?php
            if(isset($_POST["nombre"]) && isset($_POST["titulo"]) isset($_POST["email"])
            isset($_POST["mensaje"]) ){
            $fecha = date("d-M-y H:i");
            $mymail = "tuCorreo@tuServidor.com";
            $subject = "Desde el Sitio.. =)";
            $contenido = $nombre." Escribio :\n";
            $contenido .= $mensaje."\n\n";
            $contenido .= "el mensaje se escribio el ".$fecha;
            $header = "From:".$mail."\nReply-To:".$mail."\n";
            $header .= "X-Mailer:PHP/".phpversion()."\n";
            $header .= "Mime-Version: 1.0\n";
            $header .= "Content-Type: text/plain";
            mail($mymail, $subject, utf8_decode($contenido) ,$header);
            echo "&estatus=ok&";
            }
            ?>

La función isset verifica que una variable exista, en este caso verificamos
que las cuatro variables existan antes de enviar el mail.

Los parámetros de la función mail de PHP son:

  • Para: Correo destino. En este caso $mymail
  • Titulo: Titulo del Correo. En este caso $subject
  • Mensaje: Cuerpo del correo. En este caso $contenido
  • Headers o cabeceras: Son las cabeceras del correo, donde se especifica
    el tipo de contenido (texto plano, texto HTML), entre muchas otras opciones
    que no mencionare.

Una vez enviado el mail el PHP regresa la variable status que Flash interpretara…
Si dicha variable existe es que todo funcióno… =)

NOTA: Para enviar un correo en formato HTML solo necesitas
escribir el cuerpo del mensaje con dicho formato (HTML) y en los headers especificarlo,
esto se hace cambiando Content-Type: text/plain por Content-Type:
text/html

Fuente: http://www.maestrosdelweb.com/editorial/fflashphpform/

Cómo actualizar PHP

Monday, March 23rd, 2009

Empezaremos cerrando todos los procesos de Apache y MySQL de la forma citada en el párrafo
anterior. A continuación eliminaremos la carpeta PHP que se encuentra en C:\Servidor\PHP\ Luego instalaremos la nueva versión de PHP como se dice arriba,
configuraremos el nuevo php.ini, y en los pasos que se dice que copiemos ciertos
archivos a los directorios de Windows, sobreescribiremos todos archivos existentes con
los nuevos, incluido el nuevo php.ini Ya sólo te queda arrancar de nuevo el Apache
y MySQL y ver si todo ha ido bien.

Fuente: http://www.maestrosdelweb.com/editorial/phpmysqlap/#a62

Instalación de PHP5

Monday, March 23rd, 2009

1 – Instalación de Apache – Web oficial:

http://www.apache.org

En primer lugar vamos a distinguir dos tipos de Apache, que se corresponderán con
las versiones 1.3.X y 2.0.X de este programa. El motivo de la distinción es que se
usan bastante ambas versiones dependiendo del sistema operativo y la configuración
es ligeramente distinta en ambos. Por ejemplo, ambas versiones son estables en sistemas
Windows XP, pero la 2.0.X puede volverse inestable bajo Windows 98. Por tanto, se
explicará la forma de configuración para ambos y luego serás tú quien decidas con cual
te quedas. Así, si uno te falla siempre podrás utilizar el otro, pues da lo mismo.

Deberemos descargar el Apache en su versión para windows. Para ello podemos acceder
por la siguiente URL: http://httpd.apache.org/download.cgi
En cualquier caso, podemos encontrar cualquier archivo necesario en la carpeta
httpd/binaries/win32 del servidor que usemos para la descarga (pincharíamos
en Other files y eso nos conduciría al servidor seleccionado). Lo que es importante
destacar es que lo que hay que destacar son los Binarios (Binary) para Windows
(Win32), no los códigos fuente.

1.1 – Caso A: Instalación de Apache 1.3.X

Si te decides por utilizar la versión 1.3.X, buscaremos la última versión de
este tipo. En la fecha de actualización de este manual, la última versión estable
era la 1.3.33, y el archivo que tenemos que bajar es: apache_1.3.33-win32-x86-no_src.exe También puede existir el mismo archivo pero con extensión msi, en este caso podríamos
bajarlo si disponemos del Windows Installer, la ventaja es que ocupa menos.

Bien, una vez que lo tengamos, ejecutamos el instalador y vamos recorriendo las
pantallas hasta que salga una donde nos piden unos datos, en cuyo caso pondremos:

Network Domain: 127.0.0.1

Server Name: 127.0.0.1

Administrator’s Email Address: nuestro e-mail, aunque no es totalmente necesario.

Run when started manually, only for me. Seleccionamos esta opción.

Ejemplo de Apache 1.3

La IP 127.0.0.1 es la dirección IP asociada a nuestra máquina, es decir el host local
o vulgarmente conocido como Localhost. Es importante decir que a la hora de probar
tus scripts en modo local, da igual que pongas 127.0.0.1 o localhost. Finalmente,
recordar que el Apache se instala por defecto en la carpeta:

C:\Archivos de programa\Apache Group\Apache\

Bien, ahora vamos a instalar el PHP. Asegúrate ahora de tener cerrado el Apache.

1.2 – Caso B: Instalación de Apache 2.0.X

Para esta versión, en la fecha de actualizción del manual la última versión
disponible era la 2.0.53, por lo que el archivo que tenemos que bajar puede ser: apache_2.0.53-win32-x86-no_ssl.exe También puede existir el mismo archivo
pero con extensión msi, en este caso podríamos bajarlo si disponemos del Windows
Installer, la ventaja es que ocupa menos.

Bien, una vez que lo tengamos ejecutamos el instalador y vamos recorriendo las pantallas
hasta que salga una donde nos piden unos datos, en cuyo caso pondremos:

Network Domain: 127.0.0.1

Server Name: 127.0.0.1

Administrator’s Email Address: nuestro e-mail, aunque no es totalmente necesario.

For All Users, on Port 80, as a Service: seleccionamos esta opción.

Ejemplo de Apache 2.0

La IP 127.0.0.1 es la dirección IP asociada a nuestra máquina, es decir el host local
o vulgarmente conocido como Localhost. Es importante decir que a la hora de
probar tus scripts en modo local, da igual que pongas 127.0.0.1 o localhost.
Finalmente, recordar que el Apache se instala por defecto en la carpeta:

C:\Archivos de programa\Apache Group\Apache\

Bien, ahora vamos a instalar el PHP. Asegúrate ahora de tener cerrado el Apache.

2 – Instalación de PHP – Web oficial:
http://www.php.net

2.1 – Copia de archivos

Dependiendo de si estamos instalando una versión 4 de PHP o una versión 5, seguiremos
una parte o la otra.

2.1.1 – Instalación de PHP4

Procedemos a descargar el PHP para Windows. El archivo está localizado en la
sección Downloads, apartado Windows Binaries, y es el Zip Package (no el installer,
aunque éste ocupe menos luego no nos servirá). Para la versión 4.3.10, que es la
versión disponible a fecha de actualización de este manual, es:
PHP 4.3.10 zip package [7,405Kb]
. Según vayan saliendo nuevas versiones podrás
irlas encontrando en la citada sección downloads.

Una vez descargado todo el ZIP, nos creamos una carpeta en el sitio donde queramos
instalar los archivos del servidor (PHP, MySQL…), por ejemplo nos creamos una carpeta
en la raíz del disco duro y que quede así: C:\Servidor\ Ahora extraemos los
archivos del ZIP de PHP dendro de esa carpeta. En este caso se crea la carpeta
C:\Servidor\php-4.3.10-Win32\ pero como no nos gusta su nombre procedemos a
renombrarla a C:\Servidor\PHP\

Y ahora hay que coger el php4ts.dll (localizado en C:\Servidor\PHP\php4ts.dll)
y copiarlo al directorio System (en Windows 9x) o System32 (NT,2000,XP,2003) de la
carpeta del Windows. Si hay otro archivo en System o System32 lo sobreescribimos.
Igualmente coger los archivos que están en la carpeta C:\Servidor\PHP\dlls\ y
copiarlos a la carpeta System o System32 igual que hicimos con el archivo
php4ts.dll

2.1.2 – Instalación de PHP5

Procedemos a descargar el PHP para Windows. El archivo está localizado en la
sección Downloads, apartado Windows Binaries, y es el Zip Package (no el installer,
aunque éste ocupe menos luego no nos servirá). Para la versión 5.0.3, que es la
versión disponible a fecha de actualización de este manual, es:
PHP 5.0.3 zip package [7,433Kb]
. Según vayan saliendo nuevas versiones podrás
irlas encontrando en la citada sección downloads.

Una vez descargado todo el ZIP, nos creamos una carpeta en el sitio donde queramos
instalar los archivos del servidor (PHP, MySQL…), por ejemplo nos creamos una carpeta
en la raíz del disco duro y que quede así: C:\Servidor\ Dentro de esta carpeta
nos creamos otra carpeta y la llamamos PHP. Luego extraemos los archivos del ZIP
dendro de esa carpeta PHP, tal que los contenidos del ZIP quedarán dentro de la
ruta C:\Servidor\PHP\

Y ahora hay que coger el todos los archivos DLL localizados en la carpeta principal
C:\Servidor\PHP\ y copiarlos al directorio System (en Windows 9x) o System32
(NT,2000,XP,2003) de la carpeta del Windows (los archivos DLL contenidos en la carpeta
EXT no hace falta copiarlos).

2.2 – Configuración del archivo php.ini

Igual que el paso anterior, hay pequeñas diferencias dependiendo de si estamos instalando
PHP4 o PHP5, asi que elije tu caso.

2.2.1 – Instalación de PHP4

El siguiente paso es configurar el php.ini. Renombramos o copiamos el archivo
C:\Servidor\PHP\php.ini-dist y le ponemos php.ini Ahora lo editamos
con el mismo block de notas. Si lo necesitáramos (lee antes la explicación),
editamos la línea register_globals = Off y la colocamos
el valor: register_globals = On

¿Qué hago con register_globals? ¿ON u OFF?

Activar esta directiva nos permite asumir que las variables son globales y pueden
llegar por cualquier método (POST, GET, COOKIE, SERVER, etc). Así, por ejemplo,
si utilizamos una variable global de sesión o cookie se puede suplantar fácilmente
mediante una variable por url, con lo cual nuestro script no es seguro. Un buen
programador de PHP tendría la directiva en OFF y usaría los arrays globales
($HTTP_X_VARS) o los superglobales $_POST, $_GET, etc., que están disponibles a
partir de la versión 4.1.X de PHP. ¿Y por qué? Pues por esos temas de seguridad
en los script y porque debemos acostumbrarnos a no manejar variables globales ya
que en un futuro el PHP tendrá la opción en OFF por defecto y no podremos cambiarla.
Sin embargo, por temas de compatibilidad con script antiguos o que hagan uso de
variables globales, podría interesarnos activar esta característica, pero repito
que lo deseable sería tenerla en OFF y hacer uso de los arrays globales o superglobales.

A continuación vamos a indicar a PHP dónde se guardan las extensiones. Dentro del
php.ini buscamos extension_dir y le ponemos la carpeta que contiene los archivos
php_xxx.dll, que por defecto es la carpeta extensions dentro de PHP.
IMPORTANTE: durante toda la configuración de directorios, debes utilizar
esta barra “/” y no esta “\”, además de ponerlo entre comillas. O sea, que debe
quedar así:

;Directory in which the loadable extensions (modules) reside.
extension_dir = "C:/Servidor/PHP/extensions/"

Además podemos activar las extensiones que queramos o necesitemos, para lo cual
buscamos Windows Extensions y para cargar las extensiones les quitamos el ; de
delante. Por ejemplo, si quisiéramos cargar la extensión gd2.dll (para manejar
las funciones PHP relativas a imágenes) deberíamos cambiar
;extension=php_gd2.dll por extension=php_gd2.dll

Puedes ver para qué sirve cada extensión en el Manual oficial de PHP.
Como nota adicional, resaltar que hay algunas extensiones que requieren de librerías
extra que no vienen en el paquete completo de PHP, y para hacerlas funcionar tendremos
que buscar dichas librerías. No actives todas las librerías a diestro y siniestro porque
luego saldrán errores de que no se encuentra tal archivo; antes de instalar una librería,
comprueba que en la carpeta de PHP tienes los archivos DLL correspondientes.

Ahora, si vamos a hacer pruebas con upload de archivos via HTTP, debemos indicar el
directorio donde los archivos se almacenarán temporalmente. Para ello buscamos upload_tmp_dir y le damos el valor de una carpeta que exista. Por ejemplo,
en nuestro directorio C:\Servidor\PHP\ creamos una carpeta uploads, por lo que
quedará algo así:

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir = "C:/Servidor/PHP/uploads/"

Si queremos cambiar el tamaño máximo de los archivo que pueden subirse via HTTP,
buscamos upload_max_filesize y cambiamos el valor por defecto que trae,
2M (2 MB), por el que queramos. No se recomienda poner un valor alto.

; Maximum allowed size for uploaded files.
upload_max_filesize = 2M

Para trabajar con sesiones, debemos especificar un directorio donde se guarden los
archivos temporales. Al igual que 2 pasos antes, buscamos session.save_path
y le damos el valor de un directorio que exista (o lo creamos):

session.save_path = “C:/Servidor/PHP/sessions/”

A continuación copiamos el php.ini a la carpeta C:\Windows\ o C:\WinNT\ según nuestra versión de Windows.

¡Ahora vamos a decirle al Apache que tenemos el PHP!

2.2.2 – Instalación de PHP5

El siguiente paso es configurar el php.ini. Renombramos o copiamos el archivo
C:\Servidor\PHP\php.ini-dist y le ponemos php.ini Ahora lo editamos
con el mismo block de notas. Si lo necesitáramos (lee antes la explicación),
editamos la línea register_globals = Off y la colocamos
el valor: register_globals = On

¿Qué hago con register_globals? ¿ON u OFF?

Activar esta directiva nos permite asumir que las variables son globales y pueden
llegar por cualquier método (POST, GET, COOKIE, SERVER, etc). Así, por ejemplo,
si utilizamos una variable global de sesión o cookie se puede suplantar fácilmente
mediante una variable por url, con lo cual nuestro script no es seguro. Un buen
programador de PHP tendría la directiva en OFF y usaría los arrays globales
($HTTP_X_VARS) o los superglobales $_POST, $_GET, etc., que están disponibles a
partir de la versión 4.1.X de PHP. ¿Y por qué? Pues por esos temas de seguridad
en los script y porque debemos acostumbrarnos a no manejar variables globales ya
que en un futuro el PHP tendrá la opción en OFF por defecto y no podremos cambiarla.
Sin embargo, por temas de compatibilidad con script antiguos o que hagan uso de
variables globales, podría interesarnos activar esta característica, pero repito
que lo deseable sería tenerla en OFF y hacer uso de los arrays globales o superglobales.

A continuación vamos a indicar a PHP dónde se guardan las extensiones. Dentro del
php.ini buscamos extension_dir y le ponemos la carpeta que contiene los archivos
php_xxx.dll, que por defecto es la carpeta ext dentro de PHP.
IMPORTANTE: durante toda la configuración de directorios, debes utilizar
esta barra “/” y no esta “\”, además de ponerlo entre comillas. O sea, que debe
quedar así:

; Directory in which the loadable extensions (modules) reside.
extension_dir = "C:/Servidor/PHP/ext/"

Además podemos activar las extensiones que queramos o necesitemos, para lo cual
buscamos Windows Extensions y para cargar las extensiones les quitamos el ; de
delante. Por ejemplo, si quisiéramos cargar la extensión gd2.dll (para manejar
las funciones PHP relativas a imágenes) deberíamos cambiar
;extension=php_gd2.dll por extension=php_gd2.dll

Puedes ver para qué sirve cada extensión en el Manual oficial de PHP.
Como nota adicional, resaltar que hay algunas extensiones que requieren de librerías
extra que no vienen en el paquete completo de PHP, y para hacerlas funcionar tendremos
que buscar dichas librerías. No actives todas las librerías a diestro y siniestro porque
luego saldrán errores de que no se encuentra tal archivo; antes de instalar una librería,
comprueba que en la carpeta de PHP tienes los archivos DLL correspondientes.

IMPORTANTE: la librería php_mysql.dll es la que permite manejar las
funciones relacionadas con MySQL, y por defecto en PHP5 viene desactivada, por tanto
vamos a activarla de la forma que indicamos antes: buscamos
;extension=php_mysql.dll y le quitamos el ; de delante.

Ahora, si vamos a hacer pruebas con upload de archivos via HTTP, debemos indicar el
directorio donde los archivos se almacenarán temporalmente. Para ello buscamos upload_tmp_dir y le damos el valor de una carpeta que exista. Por ejemplo,
en nuestro directorio C:\Servidor\PHP\ creamos una carpeta uploads, por lo que
quedará algo así:

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir = "C:/Servidor/PHP/uploads/"

Si queremos cambiar el tamaño máximo de los archivo que pueden subirse via HTTP,
buscamos upload_max_filesize y cambiamos el valor por defecto que trae,
2M (2 MB), por el que queramos. No se recomienda poner un valor alto.

; Maximum allowed size for uploaded files.
upload_max_filesize = 2M

Para trabajar con sesiones, debemos especificar un directorio donde se guarden los
archivos temporales. Al igual que 2 pasos antes, buscamos session.save_path
y le damos el valor de un directorio que exista (o lo creamos):

session.save_path = “C:/Servidor/PHP/sessions/”

A continuación copiamos el php.ini a la carpeta C:\Windows\ o C:\WinNT\ según nuestra versión de Windows.

¡Ahora vamos a decirle al Apache que tenemos el PHP!

Fuente: http://www.maestrosdelweb.com/editorial/phpmysqlap/#a222

Configurar php.ini para Joomla

Monday, March 23rd, 2009

Para poder utilizar el gestor de contenidos Joomla es necesario tener configurado correctamente el archivo php.ini. En este artículo se comentan las líneas de configuración del archivo php.ini que se deben modificar, ya que la instalación por defecto no suele cumplir los requisitos de Joomla.

Usando un editor de texto se debe abrir el archivo php.ini de configuración y modificar las siguientes lineas:

  • Buscar la línea Magic_quotes_gpc = on; y sustituirla por Magic_quotes_gpc = off;
  • Buscar la línea Display errors = off;y sustituirla por Display errors = on;
  • Buscar la línea Extension_dir = ”./” y sustituirla por Extension_dir = ”c:\php5\ext”. Esta suele ser la ruta por defecto donde suelen estar instaladas las extensiones dentro de la carpeta de instalación de php. Si no tienes instalado PHP puedes ver como se hace en este articulo
  • Buscar la línea Session.save_path = “n:\tmp” y sustituirla por session.save_path=”c:\tmp”. En realidad se puede emplear cualquier otra carpeta para guardar la sesiónes, es muy importante tener en cuenta que la carpeta debe estar creada y que tenga los permisos correspondientes para que pueda ser escrita la variable de sesión.
  • Descomentar las siguientes líneas (para descomentar una linea en php quitar el ; inicial)
    1. Extension = php_mysql.dll
    2. extension = php_mysqli.dll
  • Para que los cambios efectuados al archivo php.ini tenga efecto es necesario reiniciar el servidor web.

Una vez se haya configurado el archivo php.ini y se debe reiniciar el servidor web para que acepte la nueva configuración de php.

Fuente: http://ayudajoomla.com/configurar-php-ini-para-joomla.html