Instalación de PHP en servidor Ubuntu

Hay dos opciones para instalar Apache en nuestro servidor Ubuntu, por módulo de apache (la forma normal) o por cgi. La forma preferible es a través de módulo, pero no todos los servidores lo permiten (como me ha pasado a mi hoy debido a que no tenía acceso a los repositorios del apt).

Importante aclarar que la forma ideal es hacerlo a través de apache puesto que por CGI parece ser que el rendimiento es mucho peor.

Pasos para la instalación por módulo de Apache

1º Actualizamos la lista de paquetes.

sudo apt-get update

2º Actualizamos los paquetes.

sudo apt-get upgrade

3º En caso de que ejecutando el comando anterior no se haya actualizado el php es porque posiblemente no hemos añadido el paquete de PHP. Lo haremos de la siguiente forma:

sudo apt-add-repository ppa:ondrej/php

4º Volvemos a ejecutar “sudo apt-get update” y posteriormente instalamos la versión de php que queramos

  • Para PHP 5.5 sudo apt-get install php5.5
  • Para PHP 5.6 sudo apt-get install php5.6
  • Para PHP 7 sudo apt-get install php7.0

Paso para la instalación por CGI de PHP

Descargamos la versión que queramos de PHP (en nuestro caso la 7.06)

2º A través de ftp subimos los archivos a una ruta. En nuestro caso será /usr/local/php706/.

Modificamos el archivo /etc/apache2/sites-available/default

En nuestro caso nos quedó de la siguiente manera:

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  ServerName blablabla.yises.com
  DocumentRoot /var/www

  <Directory /usr/local/php706/bin>
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
  </Directory>

  ScriptAlias /php706-cgi /usr/local/php706/bin

  <Directory /var/www>
    Action php706-cgi /php706-cgi/php-cgi
    AddHandler php706-cgi .php
    <FilesMatch "\.php$">
      SetHandler php706-cgi
    </FilesMatch>
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    allow from all
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/error.log

  # Possible values include: debug, info, notice, warn, error, crit,
  # alert, emerg.
  LogLevel warn

  CustomLog ${APACHE_LOG_DIR}/access.log combined

  Alias /doc/ "/usr/share/doc/"
  <Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
  </Directory>
</VirtualHost>

4º Reiniciamos el servicio de apache

sudo service apache2 restart

Notas importantes:

  • Puede que sea necesario añadir algunos módulos para que funcione correctamente. Por ejemplo:
sudo a2enmod rewrite
  • Se puede ver los mods disponibles en la ruta /etc/apache2/mods-available y los habilitados en /etc/apache2/mods-enabled
  • Normalmente los errores que nos vayan apareciendo se encontrarán en /var/log/apache2/error.log

Descarga de Página de registro con captcha incorporado en PHP

Hoy os traigo una descarga muy interesante, y es que muchas veces he necesitado una página de registro con captcha incorporado, y en todas las ocasiones me ha tocado hacerla de 0.

Básicamente será un registro de 4 campos que tendrán que ser rellenos, y un captcha que podrá ser refrescado y que el usuario tendrá que rellenar. Sólo se realizará el registro completo en el caso de estar rellenos todos los campos (son campos requeridos), el login sea único y el texto del captcha es el correcto.

Para instalarlo necesitas seguir los siguiente pasos:
1 – Crear tu tabla:
CREATE TABLE IF NOT EXISTS `users` (
`id_user` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL,
`login` varchar(100) NOT NULL,
`password` varchar(100) NOT NULL,
`email` varchar(100) NOT NULL,
PRIMARY KEY (`id_user`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

2 – Descomprimir el siguiente zip donde se quieras.

3 – Modificar en el archivo index.php la línea conectar(‘HOST’, ‘USUARIOBBDD’, ‘PASSWORDBBDD’, ‘BBDD’); y modificarlo por los valores en cuestión.

4 – Comprobar que todo funciona!! (que debería!)

Aquí os dejo también unas capturas de pantalla y de nuevo, el link al archivo descargable.

RegisterFormWithCaptcha

RegisterFormWithCaptchaOk

He utilizado para este post dos elementos:

Cakephp: Radiobutton en formulario

Pues hoy he necesitado crear unos radiobuttons dentro de un formulario. Este formulario se llama una y otra vez porque su objetivo es el hacer que el usuario conteste una pregunta y si acierta, que conteste otra.

En un principio mi código era el siguiente:

create('User', array('action' => 'index/'.$id));
  $contents .= $form->radio('Respuesta', 
         array('1'=>$answer1, '2'=>$answer2, '3'=>$answer3));
  $contents .= $form->end('Enviar info');
  echo $contents;
?>

Pero esto me generó un problema: por alguna extraña razón me mantenía el valor de la pregunta anterior en el formulario. Es decir, si había marcado la 3ª respuesta como válida en la primera pregunta, pulsaba el botón de enviar la información y en la segunda pregunta me mapeaba esa 3ª respuesta.
Buscando por foros encontré una solución que no me valió, la de añadir un default (quizás hay alguien que lo haya podido desentrañar)
En mi caso, y como lo resolví fue agregando array(‘value’=>’0’) en la creación del radiobutton. De esta forma el código queda así:

create('User', array('action' => 'index/'.$id));
  $contents .= $form->radio('Respuesta', 
         array('1'=>$answer1, '2'=>$answer2, '3'=>$answer3), array('value'=>'0'));
  $contents .= $form->end('Enviar info');
  echo $contents;
?>