Archivos de Categoría: MacPorts @es

Instalar PHP 7.0 en Mac OS X con MacPorts

He usado este proceso para instalar PHP 7.0 con MacPorts junto con PHP 5.6.

Primero asegurarse de que el Apache que viene junto con Mac OS X está parado:

$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

Instalar PHP7 y algunos de sus módulos (la lista completa de módulos disponibles aquí):

$ sudo port install php70
$ sudo port install php70-apache2handler php70-cgi php70-gd php70-curl php70-intl php70-iconv php70-gettext php70-mbstring php70-imap php70-mcrypt php70-xmlrpc php70-mysql php70-openssl php70-sockets php70-zip php70-tidy php70-opcache php70-xsl php70-sqlite

Crear el fichero php.ini base a partir del ejemplo de development:

$ sudo cp /opt/local/etc/php.ini-development /opt/local/etc/php.ini

Averiguar la timezone actual y configurarla en php.ini:

$ TIMEZONE=`sudo systemsetup -gettimezone | awk '{ print $3 }'`
$ TIMEZONE=$(printf "%s\n" "$TIMEZONE" | sed 's/[][\.*^$/]/\\&/g')
$ sudo sed -i.bak "s/;date.timezone =/date.timezone = \"${TIMEZONE}\"/g" php.ini

Actualizar los sockets de MySQL si es que se está usando:

$ sudo sed -i.bak "s#pdo_mysql\.default_socket.*#pdo_mysql\.default_socket=`/opt/local/bin/mysql_config --socket`#" php.ini
$ sudo sed -i.bak "s#mysqli\.default_socket.*#mysqli\.default_socket=`/opt/local/bin/mysql_config --socket`#" php.ini

Ahora con este comando se pueden ver las versiones de PHP instaladas:

$ sudo port select --list php
Available versions for php:
	none
	php56 (active)
	php70

Seleccionar php70 como la versión activa de PHP:

$ sudo port select php php70
Selecting 'php70' for 'php' succeeded. 'php70' is now active.

Habilitar PHP 7 en Apache:

$ cd /opt/local/apache2/modules
$ sudo /opt/local/apache2/bin/apxs -a -e -n php7 mod_php70.so

Reiniciar Apache:

$ sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper restart

Se puede comprobar la versión de php en la consola así:

$ php -v
PHP 7.0.0 (cli) (built: Dec 12 2015 11:18:35) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies

Si la versión que se muestra no es la 7.0 asegurarse de que la ruta /opt/local/bin está definida antes que /usr/bin en la variable PATH:

$ echo $PATH
/opt/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

También asegurarse de que /opt/local/bin/php está apuntando a /opt/local/bin/php70:

$ $ ls -l /opt/local/bin/php
lrwxr-xr-x  1 root  admin    20B Dec  5 23:25 /opt/local/bin/php -> /opt/local/bin/php70

Si al ejecutar phpinfo(); no aparece la versión 7.0 comprobar que solo el módulo 7.0 es cargado en /opt/local/apache2/conf/httpd.conf:

#LoadModule php5_module        modules/mod_php56.so
LoadModule php7_module        modules/mod_php70.so

php7

Byobu: el gestor de ventanas y multiplexador de terminales en modo texto

Byobu es un gestor de ventanas y multiplexador de terminales en modo texto. En este video se puede ver lo que puede hacer:

Instalar en Ubuntu:

$ sudo apt-get install byobu

Instalar en Mac OS X con brew:

$ brew install byobu

Instalar en Mac OS X con macports:

$ sudo port install python27 gettext libnewt coreutils gsed
$ curl -L -O https://launchpad.net/byobu/trunk/5.91/+download/byobu_5.91.orig.tar.gz
$ tar xzpf byobu_5.91.orig.tar.gz
$ cd byobu-5.91
$ ./configure
$ make
$ sudo make install

byobu

Ref: http://randomfoo.net/2014/01/14/byobu-on-mac-w-macports

Desactivar XDebug mientras se usa BlackfireIO

BlackfireIO y XDebug no son los mejores amigos ya que éste último puede afectar la precisión de los restultados al hacer el perfilado. Por eso se recomienda desactivar XDebug mientras se usa BlackfireIO para obtener los resultados más fiables.

blackfire

Yo modifico el nombre del fichero de configuración de XDebug y reinicio Apache para esto:

$ sudo mv /opt/local/var/db/php56/xdebug.ini /opt/local/var/db/php56/xdebug.ini.bak
$ sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper restart

Y cuando termino con BlackfireIO lo dejo como estaba:

$ sudo mv /opt/local/var/db/php56/xdebug.ini.bak /opt/local/var/db/php56/xdebug.ini
$ sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper restart

Cambiar entre diferentes versiones de PHP en Apache con Mac Ports

Si tienes por ejemplo 2 versiones diferentes de PHP en la misma máquina puede cambiar entre ellas usando APache eXtenSion tool:

Por ejemplo para activar PHP 5.4:

$ cd /opt/local/apache2/modules
$ sudo /opt/local/apache2/bin/apxs -a -e -n php5 mod_php54.so

Y para activar PHP 5.6:

$ cd /opt/local/apache2/modules
$ sudo /opt/local/apache2/bin/apxs -a -e -n php5 mod_php56.so

Para PHP 7.0:

$ cd /opt/local/apache2/modules
$ sudo /opt/local/apache2/bin/apxs -a -e -n php7 mod_php70.so

apache_logo

Solucionar “No such file or directory: httpd: could not open error log file /…/${APACHE_LOG_DIR}/site.log”

Si te aparece un error similar a este en el fichero de errores de Apache2:

No such file or directory: httpd: could not open error log file /.../${APACHE_LOG_DIR}/site.log

apache_logo

Puedes solucionarlo con tan solo indicar en el fichero envvars una variable de entorno que indique dónde está la carpeta de logs de Apache2. Si usas Mac Ports está en /opt/local/apache2/bin/envvars:

export APACHE_LOG_DIR=/opt/local/apache2/logs

Si no sabes dónde está tu fichero envvars puedes buscarlo con este comando:

find / -name "envvars"

Una vez añadida la variable reinicia el servidor Apache2.