Archives de
Tag: macos

Docker et PHP

Docker et PHP

Après un petit bout de temps à maintenir et mettre a jours php, apache et mysql sur mon par diverse moyen j’ai décidé de passer a docker. Il m’a fallut plusieurs essaie et tâtonnement pour arriver à une configuration qui me convient pour un environnement de développement.

C’est disponible sur ce dépôt github. Il y a deux conteneurs.

Le premier et le conteneur mysql de base avec un seul utilisateur root et comme mot de passe root.

Le second est un conteneur php avec apache plus quelques extensions ainsi que composer accessible par la commande composer :

  • apcu
  • xdebuh
  • intl
  • opcache
  • gd
  • mysqli
  • pdo
  • zip

Apache est configuré avec ssl et rewrite.

Pour utiliser xdebug, mettez à jour le fichier php.ini avec votre IP pour xdebug.remote_host=192.168.1.10 puis dans l’url ajoutez « ?XDEBUG_SESSION_START= »

 

Yosemite PHP APCu xDebug intl

Yosemite PHP APCu xDebug intl

Afin d’utiliser symfony2 avec la version de PHP fournit pas Yosemite, il faut rajouter quelques extensions.

Pour commencer il faut installer Xcode depuis l’App Store et ne pas oublié de l’exécuter afin d’accepter la licence d’utilisation.

Commençons par intl. En premier il nous faut les sources d’ici disponible a cette url : http://sourceforge.net/projects/icu/files/ICU4C/54.1/icu4c-54_1-src.tgz/download

Une fois fait, il faut les extraire, ouvrir un Terminal dans le dossier icu/source puis lancer les commandes suivantes :

./runConfigureICU MacOSXmake
sudo make install
sudo pecl install intl

Passons à APCu et Xdebug. Toujours dans le terminal lançons les commandes suivantes :

sudo pecl install apcu-beta
sudo pecl install xdebug

Dernière étape, la création et la modification du fichier php.ini

En premier lieu, copion le fichier php.ini.default

cp /etc/php.init.default /etc/php.ini

Puis modifions la valeur de « date.timezone »

Pour finir il suffit d’ajouter les lignes suivantes à la fin du fichier :

extension=/usr/lib/php/extensions/no-debug-non-zts-20121212/apcu.so
extension=/usr/lib/php/extensions/no-debug-non-zts-20121212/intl.so
zend_extension=/usr/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so
xdebug.max_nesting_level=250
Vagrant et Symfony2

Vagrant et Symfony2

Suite au formatage de mon Windows et au futur formatage de mon Mac, je me suis dit qu’il serait vraiment temps de regarder du côté de Vagrant pour ne pas avoir à reconfigurer à chaque fois un nouvel environnement de travail.

Vagrant est un outil permettant de gérer facilement des machines virtuelles. Pour l’installation rien de plus simple, il faut installer VirtualBox puis Vagrant.

Afin d’avoir automatiquement la bonne version des VirtuablBox Guest, installe le plugin vagrant-vbguest en ligne de commande avec :

vagrant plugin install vagrant-vbguest

Dans cet article je ne parlerais que de Mac, je ferais un autre article pour Windows.

Afin d’accéder aux sites web rajouter la ligne suivant dans votre fichier hosts :

127.0.0.1       www.pma.local sonata.fr

Afin d’utiliser Vagrant il nous faut créer un fichier Vagrantfile. Ce fichier est écrit en Ruby et fournit à Vagrant les informations nécessaires à la création et au provisionnement de la machine virtuelle.

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "centos64"
  config.vm.box_url = "http://puppet-vagrant-boxes.puppetlabs.com/centos-64-x64-vbox4210-nocm.box"

  config.vm.network :forwarded_port, guest: 80, host: 80
  config.vm.network :forwarded_port, guest: 443, host: 443

  config.vm.provider "virtualbox" do |v|
	v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
    v.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
  end

  config.vm.network "private_network", ip: "10.11.12.13"
  config.vm.synced_folder ".", "/vagrant", nfs: true
  config.nfs.map_uid = Process.uid
  config.nfs.map_gid = Process.gid

  config.vm.provision "shell", path: "app/config/vagrant.sh"
end

Dans ce fichier Vagrantfile plusieurs choses sont importantes:

  • Les lignes 7 et 8 définissent l’image de machine virtuelle à utiliser et où la télécharger si elle n’est pas disponible sur la machine
  • Les lignes 10 et 11 permettent de rediriger les ports de la machine physique vers la machine virtuelle
  • Les lignes 13 à 16 permettent de changer les paramètres de la machine virtuelle, dans notre cas cela concerne les dns
  • La ligne 18 définit un réseau privé avec l’adresse IP de la VM
  • La ligne 19 monte le répertoire courant de la machine physique dans le répertoire /vagrant le la machine virtuelle en utilisant NFS
  • Les lignes 20 et 21 servent à configurer les droits d’accès aux fichiers
  • La ligne 23 définit quel script sera exécuté lors de l’étape de provisionnement

La ligne 23 fait référence à un fichier vagrant.sh, nous allons le voir en détail. Ce fichier va installer et configurer les différents logiciels pour notre machine virtuelle :

  • Mise à jour des paquets
  • Installation des dépendances pour la compilation d’Apache et de PHP
  • Compilation et configuration d’Apache et PHP (APC, Xdebug)
  • Installation de composer et phpMyAdmin
  • Préconfiguration de l’application Symfony2

Afin de créer la machine virtuelle, ouvrez une ligne de commande dans le dossier ou ce situe le fichier Vagrantfile puis lancez vagrant up .

Une fois la machine virtuelle créée vous pourrez vous rendre sur :

Pour exécuter des lignes de commande, utilisez vagrant ssh afin de vous connectez dans la machine virtuelle.

Et voilà. Le dépôt GitHub est à jour.

Connexion MySQL avec le mamp de macports

Connexion MySQL avec le mamp de macports

Pour faire suite à l’installation de mamp avec macports, j’ai voulu installer symfony2. Lors de la configuration de la base de données, je n’ai pas rencontré de problèmes particuliers. Lorsque j’ai voulu créer la base de données avec symfony j’ai eu l’erreur suivante :

Could not create database for connection named `symfony`
SQLSTATE[HY000] [2002] No such file or directory

Après quelques recherches sur le net j’ai enfin trouvé la réponse. Lors de la configuration de la base de données, la valeur de l’hôte MySQL est localhost. Or la version de MySQL installé avec macports est configurée pour avoir le fichier mysqld.sock dans le dossier suivant:

/opt/local/var/run/mysql5/

Quand a PHP, il s’attend a le trouvé dans

/tmp

Forcement, cela pose problème. Pour le résoudre un lien suffit :

ln /opt/local/var/run/mysql5/mysqld.sock /tmp/mysql.sock

Et voilà la connexion MySQL en utilisant localhost fonctionne.

xdebug et MAMP

xdebug et MAMP

Suite à l’installation de MAMP, j’ai voulu installer xdebug.

Les premiers tutoriels que j’ai trouvés parlaient de précompilation avec différents outils. Rien de bien simple. Ce soir en m’y repenchant je suis tombé sur ce tuto assez simple.

Depuis 2009 certaines choses ont changé, je vais donc réexpliquer la démarche.

La première chose a faire et lancer MAMP et localiser ou ce situe le fichier php.ini ainsi que le dossier des extensions. Pour cela, allez sur http://127.0.0.1/MAMP/help.php?language=English et cherchez « php.ini » et « extension_dir » notez bien ces deux valeurs.

Le deuxième est de télécharger la librairie « PHP Remote Debugging » depuis le site du projet Komodo. La version Mac OS X la plus récente fera l’affaire. Une fois téléchargé, décompresser le fichier et allez dans le répertoire de votre version de PHP. Copiez alors le fichier « xdebug.so » dans le dossier des extensions PHP.

Éditez ensuite le fichier php.ini pour décommenter la ligne en dessous de « [xdebug] ». Le chemin sur la ligne doit être le bon ( le même que celui dans lequel vous avez copié le fichier xdebug.so.

Il suffit alors de redémarrer MAMP pour que xdebug soit pris en compte.