cp et « liste d’arguments trop longue »

12 mars 2014

Si lors de la copie d’un grand nombre de fichiers vous avez le message d’erreur :

Liste d'arguments trop longue

C’est que le nombre de fichiers est trop important. Que ce soit pour cp, rm ou mv, les fichiers sont passés en paramètres de la commande.

Dans ce cas on peut passer par find pour résoudre le problème :

> find /dossier/source/ -type f -name '*' -exec cp {} /dossier/destination/. \;

 

Sécuriser son WordPress

5 septembre 2013

Quelques infos glanées sur le web sur la sécurité WordPress. Les infos proviennent principalement de :

Le fichier .htaccess

Bloquer le scan d’auteurs

# BEGIN block author scans

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} (author=\d+) [NC]
RewriteRule .* - [F]

# END block author scans

Lire le reste de cet article »

Sonata : Améliorer le CKEditor de FormatterBundle

20 juin 2013

Nous allons insérer ici deux choses :

  • Un plugin permettant d’ajouter des vidéos Youtube dans CKEditor
  • Utiliser un « File Browser » pour gérer les différents médias : KCFinder

On va commencer par étendre le FormatterBundle :

php app/console sonata:easy-extends:generate --dest=src SonataPageBundle

que l’on va ensuite activer dans AppKernel.php

1
2
3
4
5
6
7
8
9
10
11
public function registerBundles()
{
    // ...
 
    $bundles = array(
        // ...
        new Application\Sonata\FormatterBundle\ApplicationSonataFormatterBundle(),
    );
 
    // ...
}

Lire le reste de cet article »

Sonata : Créer un MediaBlock personnalisé

14 juin 2013

Ce document se base sur la documentation de Sonata décrivant la procédure pour créer un block personnalisé.

Exposition du cas: On désire créer un slide show ou un carrousel quelconque on veut pouvoir le gérer via SonataPage, c’est à dire pouvoir gérer les images qui défilent via le CMS. L’idée est de créer un block container content_slide par exemple et pouvoir gérer les images du carrousel via des blocks media.

Nous aurons besoin des éléments suivants:

  • Créer un block media personnalisé qui contiendra une image, un titre et un lien
  • Créer un contexte personnalisé slide pour lequel on définira une taille de miniature spécifique

Pour réaliser cela, nous nous baserons la documentation de Sonata indiquée en début d’article. Le principe reste le même pour un MediaBlock avec quelques ajustements. Tout d’abord, voici la structure de notre Bundle :

/src
    /Coolcoyote
        /BlocksBundle
            /Block
                /SlideMediaBlockService.php
            /DependencyInjection
                /Configuration.php
                /CoolcoyoteBlocksExtension.php
            /Resources
                /config
                    /services.xml
                /views
                    /Block
                        block_slide_media.twig.html
            /CoolcoyoteBlocksBundle.php

Lire le reste de cet article »

Installation du CMS Sonata Page

13 mai 2013

Voici comment installer le CMS Sonata Page à partir d’une installation neuve de Symfony. Cet article sera modifié régulièrement au fur et à mesure de mes découvertes.

Le but est de mettre en place un environnement complet à savoir:

  • Un système de CMS nous permettant de créer des pages, modifier des blocks dans les pages sans avoir à éditer de code
  • Une gestion de membres, au moins pour protéger l’administration dans un premier temps
  • Une gestion des médias permettant l’insertion d’images, vidéos etc.
  • La possibilité d’utiliser de l’ »HTML Riche » pour les publications
  • Une administration permettant de gérer tout ce petit monde.

Installation de Symfony 2 via composer :

php composer.phar create-project symfony/framework-standard-edition sonata/ 2.2.1

Modifier le composer.json pour y inclure les bundles suivants :

"sonata-project/page-bundle": "2.3.*@dev",
"sonata-project/doctrine-orm-admin-bundle": "2.2.*@dev",
"sonata-project/admin-bundle": "2.2.*@dev",
"sonata-project/block-bundle": "2.2.*@dev",
"knplabs/knp-menu-bundle": "1.1.*@dev",
"sonata-project/seo-bundle": "1.1.1",
"sonata-project/easy-extends-bundle": "2.1.*@dev",
"sonata-project/notification-bundle": "2.2.*@dev",
"guzzle/guzzle": "3.3.*@dev",
"liip/monitor-bundle": "1.0.*@dev",
"liip/monitor": "1.0.*@dev",
"videlalvaro/php-amqplib": "v2.0.2",
"sonata-project/user-bundle": "2.2.*@dev",
"sonata-project/media-bundle": "2.2.*@dev",
"sonata-project/formatter-bundle": "2.2.*@dev"

puis lancer la commande

php composer.phar update

Pour télécharger les mises à jour.

Lire le reste de cet article »

Symfony2 : Unknown database type enum requested

3 octobre 2012

Avec Symfony2 et Doctrine2, il se peut que vous rencontriez ce message d’erreur:

[Doctrine\DBAL\DBALException]
 Unknown database type enum requested, Doctrine\DBAL\Platforms\MySqlPlatform may not support it.

C’est que vous utilisez le type ENUM dans vos tables MySQL qui n’est pas compris par PDO. Le plus simple pour le résoudre : éditer le fichier config.yml et rajouter

mapping_types:
    enum: string

A la fin de la rubrique doctrine:dbal:

doctrine:
    dbal:
        driver: %database_driver%
         host: %database_host%
         port: %database_port%
         dbname: %database_name%
         user: %database_user%
         password: %database_password%
         charset: UTF8
         mapping_types:
             enum: string

Il existe d’autres solutions proposées dans la documentation de Doctrine, mais plus complexes, tout dépendra de vos besoins.

Installation de Composer sous Linux et Windows

25 septembre 2012

Informations tirées des blogs :

Installation sous Linux

Utiliser la commande

> curl -s https://getcomposer.org/installer | php

Ou alors si curl n’est pas installé :

> php -r "eval('?>'.file_get_contents('https://getcomposer.org/installer'));"

Idéalement, on va déplacer ensuite le fichier composer.phar dans /user/local/bin pour pouvoir y accéder de façon globale sur le système:

> mv composer.phar /usr/local/bin/composer

Désormais si l’on fait un :

> composer --version

On doit avoir un résultat du type:

Composer version 6bd7ca0

Si on veut installer directement composer dans le répertoire /usr/local/bin :

> curl -s https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin

Installation sous Windows

Nous n’avons pas de commande curl, donc nous allons utiliser la deuxième méthode. Je pars du principe que nous utilisons WAMP sous Windows 7, que nous avons une installation avec les répertoires par défaut, que la version de PHP est la 5.3.13 et que vous savez utiliser la console de commandes Windows.

Tout d’abord, ouvre le fichier php.ini qui se trouve dans le répertoire c:\wamp\bin\php\php5.3.13 et assurez-vous que la ligne

extension=php_openssl.dll

est décommentée (supprimez le point virgule au début de la ligne). Assurez vous également d’ajouter le chemin c:\wamp\bin\php\php5.3.13 à la variable Path de votre système, cela permettra d’utiliser la commande php n’importe où.

Pour cela, Menu Démarrer / Panneau de configuration / Système et Sécurité / Système / Paramètres système avancés. Cliquez sur le bouton « Variables d’environnement », cherchez la variable Path dans la première fenêtre et double cliquez dessus. A la fin de la ligne rajoutez :

;c:\wamp\bin\php\php5.3.13

N’oubliez pas le point-virgule ! Validez et fermez tout.

Ouvrez maintenant une console et lancez la commande :

php -r "eval('?>'.file_get_contents('https://getcomposer.org/installer'));"

Un message devrait vous indiquer que l’installation s’est bien passée. La problématique sous Windows est que contrairement à Linux, on ne va pas pouvoir utiliser directement la commande composer et qu’il faudra installer une copie de composer.phar dans chaque répertoire de projet. Il est possible d’améliorer cela en bidouillant un peu :)

Commencez par déplacer composer.phar dans le répertoire c:\wamp\bin\php\php5.3.13

Toujours dans ce répertoire, créez le fichier composer.bat que vous allez ouvrir avec un éditeur de texte (le bloc notes fera l’affaire). Saisissez les commandes suivantes :

@echo off
php c:\wamp\bin\php\php5.3.13\composer.phar %*

Et sauvegardez (évidemment personnalisez si vos répertoires ne sont pas les mêmes).

Ouvrez à nouveau une console et tapez

composer --version

Normalement, tout devrait fonctionner. Désormais vous pouvez utiliser composer comme sous Linux ! Une simple mise à jour de composer.phar dans le répertoire /usr/local/bin ou c:\wamp\bin\php\php5.3.13\ vous permettra de profiter de cette nouvelle version partout

Utiliser SASS sous Windows

18 juillet 2012

Désireux de tester SASS, j’ai été un peu freiné par l’utilisation. En effet, si mes développements web se trouvent sur un machine sous Debian, ma machine de développement, elle, est sous Windows 7. SASS s’utilise en ligne de commande, et si ça ne me dérange pas d’en faire sous Linux, sous Windows ça me saoûle un peu et je trouve ça pas pratique. J’ai donc pris mon courage à deux mains pour mettre en place un système plus « User Friendly », c’est à dire soit déclencher la compilation d’un fichier .scss en double cliquant dessus, soit grâce au menu contextuel de Windows.

Lire le reste de cet article »

L’opérateur + sur les tableaux en PHP

25 mai 2012

Dans cet article nous allons nous pencher sur l’opérateur + et sur son action sur les tableaux en PHP.

Dans le cas des tableaux, le + représentera une union et non pas une addition aveugle de deux tableaux.

Prenons le cas le plus simple, l’union de tableaux associatifs:

1
2
3
4
5
6
7
8
9
10
11
<?php
$array1 = array(
    'cle1' => 'bleu',
    'cle2' => 'blanc',
);
 
$array2 = array(
    'cle3' => 'rouge',
);
 
print_r($array1 + $array2);

Le résultat de ce code :

Array
(
    [cle1] => bleu
    [cle2] => blanc
    [cle3] => rouge
)

Jusque là, aucun problème, les deux tableaux ont fusionné et le tableau $array2 a été ajouté à la suite de $array1. Prenons maintenant un premier cas particulier : les deux tableaux ont une clé en commun :

Lire le reste de cet article »

Installation de vlogger sur squeeze

13 février 2012

vlogger est un petit script qui va s’occuper de gérer l’écriture des logs à la place d’Apache. Pourquoi ? Car il est bien mieux optimisé qu’Apache pour faire cette tâche et que du coup nous allons soulager notre serveur et économiser des ressources qui seront plutôt utilisées ailleurs. De plus sa façon de créer les logs est plutôt sympathique: vlogger va créer dans le répertoire de logs d’Apache un répertoire pour chaque VirtualHost du serveur (ce nom sera basé sur le ServerName). A l’intérieur, vlogger va créer un fichier de log différent pour chaque jour, et va créer un lien symbolique access.log vers le fichier de log du jour.

Lire le reste de cet article »