PHP in CLI, and external editor.

ViPHP
ViPHP | 4674 Messages

20 juil. 2008, 18:11

Hey :),

Je m'amuse un peu avec le mode CLI de PHP, et a fortiori avec les fonctions systèmes (system(), exec(), etc.). Je n'ai pas réussi — depuis PHP — à ouvrir un éditeur genre vi sans que cela provoque la fin du script PHP (ou le plantage).

Par exemple :

Code : Tout sélectionner

$ php -a Interactive mode enabled <?php echo 'salut'; salut system('cd ~/Desktop; vi Toto'); Vim: Warning: Output is not to a terminal
Ici vi s'ouvre, mais le contrôle est réduit. Je peux l'utiliser comme il faut, sauf que je ne vois rien de ce que je tape.
Avec Emacs, je n'ai pas eu ce problème, mais tout le monde sait qu'Emacs c'est le mal, alors bon …
Et d'une manière général, on peut souhaiter utiliser Eclipse, Notepad, ou d'autres programmes du genre. Est-ce quelqu'un a déjà utiliser des éditeurs externes pour ses programmes ? Merci :).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 1511 Messages

20 juil. 2008, 18:31

Prototype de la fonction system:

Code : Tout sélectionner

string system ( string $command [, int &$return_var ] )
Premier élèment de réponse ;)

ViPHP
ViPHP | 4674 Messages

20 juil. 2008, 18:47

Euh, hors-sujet … ??

C'est moi qui est mal formulé mon problème, ou … :? ?
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 1511 Messages

20 juil. 2008, 19:09

Ce que je voulais dire par la, c'est que la fonction system ne t'affiche pas le résultat, elle te le revoie au travers de la variable spécifiée dans le prototype de la fonction en seconde position.
De ce fait, il est normal que Vi ne soit pas vu par toi même.
Emacs doit fonctionner différement et utiliser une librairie qui lui fait "prendre" la main sur la fenêtre parente je pense ;)
Enfin, ceci n'est que pure supposition.

Pour revenir au sujet principal, qui est le lancement d'un programme externe et non php via la fonction system, c'est tout a fait possible vu qu'ils sont pour la plupart lancables depuis le terminal.
Par contre, attentions aux installations avec suPHP, car je ne pense pas que le déplacement soit autorisé, a vérifier sur bécane équipée ;)

Mammouth du PHP | 959 Messages

20 juil. 2008, 19:12

Personnellement, pas très bien compris :P
Mais t'en fais pas, en septembre c'est la reprise et PHPFrance sera un peu plus actif parce-que là euh..... tout le monde est aller sous les cocotiers :lol:

ViPHP
ViPHP | 5924 Messages

20 juil. 2008, 20:21

Personnellement, pas très bien compris :P
Mais t'en fais pas, en septembre c'est la reprise et PHPFrance sera un peu plus actif parce-que là euh..... tout le monde est aller sous les cocotiers :lol:
Et tu penses que ton message va faire avancer son problème ? :-/

ViPHP
ViPHP | 4674 Messages

20 juil. 2008, 22:29

@momox : en fait je vois Vi, mais ce que je tape dedans n'apparaît pas à l'écran (cf. Vim : Warning: Output is not to a terminal), et oui. Le problème ne vient pas de la fonction utilisé (system, exec, peu importe), mais de la gestion des sorties vers le terminal par PHP.

Les éditeurs externes sont particuliers, car ils ne doivent pas prendre la main. C'est tout ce que je sais. Je demandais juste plus d'informations sur l'utilisation, la mise en place, et le fonctionnement des éditeurs externes. Je sais que Thunderbird le propose, mais je ne me suis pas encore penché dessus (et l'idée de me lire toutes les sources me fatigue d'avance :P). D'autant plus qu'en PHP, ce sera encore différent.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 1511 Messages

20 juil. 2008, 22:34

Ce que j'aimerais, afin de pouvoir t'aider, c'est que tu m'expliques ta démarche :?
Ce que tu souhaites, c'est ouvrir un fichier dans un éditeur a partir d'un script ?

ViPHP
ViPHP | 4674 Messages

20 juil. 2008, 22:47

Bien.
Par un beau matin d'été, alors que tu utilisais PHP en ligne de commande, une envie soudaine te vient : tu souhaites utiliser un éditeur externe depuis PHP, c'est à dire lancer vi par exemple depuis PHP.

Ne chercher pas une utilité particulière, je veux juste le faire ;-).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 1511 Messages

21 juil. 2008, 17:51

Je viens de faire divers tests sous gnome.
En faisant par exemple

Code : Tout sélectionner

gnome-terminal -e vi
il me lance vi.
Je vais continuer les tests et voir si je peux te trouver quelque chose qui corresponde ;)

Mammouth du PHP | 1511 Messages

21 juil. 2008, 17:57

Après tests, la syntaxe suivante ouvre un nouveau terminal avec vi sous gnome.
system('gnome-terminal -e vi');
En trouvant l'équivalent sous Mac, tu devrais pouvoir faire de même ;)

ViPHP
ViPHP | 4674 Messages

21 juil. 2008, 19:00

Hmmm ok. Je vais jeter un coup d'œil :).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 5924 Messages

21 juil. 2008, 19:10

En fait le problème c'est que vi est un pur programme en ligne de commande (ce que je ne pense pas pour emacs, je pense qu'il est assez évolué pour se lancer dans sa propre fenêtre), il faut donc lui ouvrir son terminal en même temps de l'appeler, donc sous Mac OS X :
/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal /usr/bin/vim &
Le problème, c'est que autant les shells (bash, sh, etc…) sont assez présents sur tous les systèmes (enfin presque…), autant les applications graphiques pour gérer un terminal sont souvent très différentes, même au sein d'un même système (rien que pour linux le terminal graphique par défaut est différent pour KDE et pour GNOME, sans compter les systèmes en ligne de commande où il faudrait pouvoir lancer vim sur l'un des terminaux déjà ouverts… Il faudra gérer ces cas particuliers si tu veux porter ta solution…

ViPHP
ViPHP | 4674 Messages

21 juil. 2008, 23:30

En fait, il faudrait même prévoir un système pour que l'utilisateur écrive ce qu'il veut. C'est lui qui va choisir son éditeur externe, pas moi.

Hmm, je sens que je vais m'amuser 2 minutes :?.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).