OVH Community, votre nouvel espace communautaire.

php à la ligne de commande


stephaneeybert
05/12/2011, 14h00
J'ai créé un autre post plus approprié et spécifique à ce dernier problème:

http://forum.ovh.com/showthread.php?t=75363

stephaneeybert
03/12/2011, 17h18
En passant à /usr/local/bin/php5 comme tu l'avais suggéré, cela à solutioné le problème.

Maintenant, j'ai autre chose, la session qui ne veut pas démarrer... session_start() provoque une erreur.

Ce script est appellé par l'interface web de php à l'aide de la fonction system()

En fait c'est le même genre d'erreur que j'avais eu il y a quelques jours, alors que j'exécutais mes scripts avec un mauvais nom d'utilisateur.

Mon utilisateur httpd est learnintouch indiqué par:
SuexecUserGroup learnintouch www
dans le virtual host, et mes fichiers scripts php se doivent d'avoir aussi le même utilisateur, autrement, j'ai une erreur à la création de la session php.

C'est étonnant, je trouve, que l'utilisateur du fichier script php, et non pas seulement l'utilisateur de httpd, soit pris en compte ainsi. Bon, il suffit de le savoir, et de ne pas oublier d'attribuer le bon utilisateur à tous les fichiers scripts php dernièrement déployés par ftp et ssh.

Je saisi donc toujours la commande:
chown -R learnintouch:www /home/learnintouch
après un déploiement de fichiers scripts php.

En ce qui concerne cette erreur sous php à la ligne de commande, je me dis que c'est encore une question d'utilisateurs sur les fichiers et/ou dans la configuration de httpd.

Ainsi, je suppose qu'à la ligne de commande, php n'est pas au courant de l'instruction:
SuexecUserGroup learnintouch www
et qu'il n'apprécie pas d'avoir les scripts php avec cet utilisateur là au moment de créer la session...

Mais je spécule un peu..

J'ai donc essayé de changer dans le fichier httpd.conf la valeur de User et Group de nobody et nobody à learnintouch et www ainsi:
User learnintouch
Group www
Mais cela provoque une erreur de serveur lorsque je veux accèder au site web depuis le navigateur. Je me demande bien pourquoi d'ailleurs.

cassiopee
03/12/2011, 15h18
Manifestement ce n'est pas prévu pour être lancé de cette façon, non ?

stephaneeybert
03/12/2011, 14h38
Je n'avais pas vu ton message. Effectivement, ça a solutioné le problème.

Maintenant j'en suis au suivant :-)

Le jeu de l'oie.. avancez de 3 cases !

stephaneeybert
03/12/2011, 14h36
Je soupconne les classes statiques de ne pas être chargées.

http://php.net/manual/fr/language.oop5.autoload.php
"L'auto-chargement n'est pas disponible si vous utilisez PHP en mode interactif CLI. "

J'ai donc essayé d'utiliser ces deux fonctions:

spl_autoload_extensions(".php");
spl_autoload_register();

Mais ça me donne:

PHP Fatal error: Call to undefined function: spl_autoload_extensions()

Et pourtant mon phpinfo() indique bien:

SPL support enabled
Interfaces Countable, OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject
Classes AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException

cassiopee
03/12/2011, 14h34
Essaye avec "/usr/local/bin/php5" à la place de "/usr/local/bin/php"
(explication : le premier est un moteur PHP 5.x alors que le second est un moteur PHP 4.x)

Tu es sûr que cette commande est à lancer en ligne de commande ?

stephaneeybert
03/12/2011, 14h18
J'ai mis de l'ordre dans les includes, pour arriver à l'étape buvette suivante:

Le argc qui n'est pas définie:

vps13495 stephane # /usr/local/bin/php -c /usr/local/lib64/php53/php.ini -d include_path='/home/learnintouch/www/learnintouch.com/engine/setup/' -f /home/learnintouch/www/learnintouch.com/engine/modules/backup/batchBackup.php /home/learnintouch/www/learnintouch.com/account/data/backup/file/backup_db_db_learnintouch_2011-12-01_23-39.sql 0 1 0 0 1 /home/learnintouch/www/learnintouch.com/account/setup/specific.php
PHP Notice: Undefined variable: argc in /home/learnintouch/engine/modules/backup/batchBackup.php on line 11

J'ai alors passé la directive register_argc_argv à On et cela a solutioné le problème.

Et maintenant j'ai droit à ça:

PHP Parse error: syntax error, unexpected T_STATIC, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/learnintouch/engine/lib/javascript.php on line 6

Et en fait j'ai cette erreur sur tous mes fichiers qui sont des classes contenant des fonctions static, comme:


class LibJavaScript {

// Remember the scrolling position in the window
static function rememberScroll($scrollName) { <<<==== Erreur

cassiopee
03/12/2011, 12h33
Citation Envoyé par stephaneeybert
Bon, je vais un peu batailler avec la config de mon application pour solutioner ces erreurs.. Ca devrait pas me prendre trop de temps. Merci encore !

vps13495 stephane # /usr/local/bin/php -c /usr/local/lib64/php53/php.ini -d include_path='/home/learnintouch/www/learnintouch.com/engine/setup/' -f /home/learnintouch/www/learnintouch.com/engine/modules/backup/batchBackup.php /home/learnintouch/www/learnintouch.com/account/data/backup/file/backup_db_db_learnintouch_2011-12-01_23-39.sql 0 1 0 0 1 /home/learnintouch/www/learnintouch.com/account/setup/specific.php
PHP Notice: Undefined index: SERVER_NAME in /home/learnintouch/engine/setup/website.php on line 4
PHP Notice: Undefined index: DOCUMENT_ROOT in /home/learnintouch/engine/setup/website.php on line 5
PHP Notice: Undefined index: SCRIPT_FILENAME in /home/learnintouch/engine/setup/website.php on line 7
PHP Notice: Undefined index: HTTP_HOST in /home/learnintouch/engine/setup/website.php on line 9
PHP Notice: Undefined index: HTTP_USER_AGENT in /home/learnintouch/engine/setup/website.php on line 10
PHP Notice: Undefined index: REMOTE_ADDR in /home/learnintouch/engine/setup/website.php on line 11
PHP Notice: Undefined index: REQUEST_URI in /home/learnintouch/engine/setup/website.php on line 12
PHP Notice: Undefined variable: gSetupWebsiteUrl in /home/learnintouch/engine/setup/path.php on line 3
PHP Notice: Undefined variable: gRootPath in /home/learnintouch/engine/setup/path.php on line 10
PHP Notice: Undefined variable: gRootPath in /home/learnintouch/engine/setup/path.php on line 32
PHP Warning: main(engine/lib/browser.php) [function.main]: failed to open stream: No such file or directory in /home/learnintouch/engine/setup/library.php on line 5
PHP Fatal error: main() [function.require]: Failed opening required 'engine/lib/browser.php' (include_path='/home/learnintouch/www/learnintouch.com/engine/setup/') in /home/learnintouch/engine/setup/library.php on line 5
vps13495 stephane #
Oui voilà, ça va être dans la même veine (une histoire d'inclusion) que
ci-dessus, courage

cassiopee
03/12/2011, 12h32
Citation Envoyé par stephaneeybert
Tu as raison pour la partie referer, c'est la log de php qui ajoute ça, j'aurais du l'enlever de mon message.

Sinon, je viens d'essayer ta suggestion, et ça à l'air prometteur car l'exécutable php a pu être appellé:

vps13495 stephane # /usr/local/bin/php -c /usr/local/lib64/php53/php.ini -d include_path='/home/learnintouch/www/learnintouch.com/engine/setup/' -f /home/learnintouch/www/learnintouch.com/engine/modules/backup/batchBackup.php /home/learnintouch/www/learnintouch.com/account/data/backup/file/backup_db_db_learnintouch_2011-12-01_23-39.sql 0 1 0 0 1 /home/learnintouch/www/learnintouch.com/account/setup/specific.php > /dev/null
PHP Notice: Undefined variable: argc in /home/learnintouch/engine/modules/backup/batchBackup.php on line 11
PHP Fatal error: Call to undefined function: reporterror() in /home/learnintouch/engine/modules/backup/batchBackup.php on line 20

Il faut maintenant que je vois pourquoi cette dernière erreur.

Merci :-)
Vraisemblablement un problème d'inclusion de fichier : la fonction reporterror() doit
être déclarée dans un fichier "a.php" qui lui est inclus dans un fichier "b.php", or il est possible
que "a.php" et "b.php" ne soient pas dans les mêmes répertoires.

Du coup "b.php" ne trouve pas "a.php" et donc les fonctions qu'il contient restent inconnues dans "b.php".

A voir avec "include_path" qui permet d'indiquer un ou plusieurs répertoires dans
lequel PHP va chercher les fichiers inclus (et donc ajouter le répertoire où se trouve
le fichier "a.php" dans lequel est déclarée la fonction reporterror() ).

stephaneeybert
03/12/2011, 12h30
Bon, je vais un peu batailler avec la config de mon application pour solutioner ces erreurs.. Ca devrait pas me prendre trop de temps. Merci encore !

vps13495 stephane # /usr/local/bin/php -c /usr/local/lib64/php53/php.ini -d include_path='/home/learnintouch/www/learnintouch.com/engine/setup/' -f /home/learnintouch/www/learnintouch.com/engine/modules/backup/batchBackup.php /home/learnintouch/www/learnintouch.com/account/data/backup/file/backup_db_db_learnintouch_2011-12-01_23-39.sql 0 1 0 0 1 /home/learnintouch/www/learnintouch.com/account/setup/specific.php
PHP Notice: Undefined index: SERVER_NAME in /home/learnintouch/engine/setup/website.php on line 4
PHP Notice: Undefined index: DOCUMENT_ROOT in /home/learnintouch/engine/setup/website.php on line 5
PHP Notice: Undefined index: SCRIPT_FILENAME in /home/learnintouch/engine/setup/website.php on line 7
PHP Notice: Undefined index: HTTP_HOST in /home/learnintouch/engine/setup/website.php on line 9
PHP Notice: Undefined index: HTTP_USER_AGENT in /home/learnintouch/engine/setup/website.php on line 10
PHP Notice: Undefined index: REMOTE_ADDR in /home/learnintouch/engine/setup/website.php on line 11
PHP Notice: Undefined index: REQUEST_URI in /home/learnintouch/engine/setup/website.php on line 12
PHP Notice: Undefined variable: gSetupWebsiteUrl in /home/learnintouch/engine/setup/path.php on line 3
PHP Notice: Undefined variable: gRootPath in /home/learnintouch/engine/setup/path.php on line 10
PHP Notice: Undefined variable: gRootPath in /home/learnintouch/engine/setup/path.php on line 32
PHP Warning: main(engine/lib/browser.php) [function.main]: failed to open stream: No such file or directory in /home/learnintouch/engine/setup/library.php on line 5
PHP Fatal error: main() [function.require]: Failed opening required 'engine/lib/browser.php' (include_path='/home/learnintouch/www/learnintouch.com/engine/setup/') in /home/learnintouch/engine/setup/library.php on line 5
vps13495 stephane #

stephaneeybert
03/12/2011, 12h23
Tu as raison pour la partie referer, c'est la log de php qui ajoute ça, j'aurais du l'enlever de mon message.

Sinon, je viens d'essayer ta suggestion, et ça à l'air prometteur car l'exécutable php a pu être appellé:

vps13495 stephane # /usr/local/bin/php -c /usr/local/lib64/php53/php.ini -d include_path='/home/learnintouch/www/learnintouch.com/engine/setup/' -f /home/learnintouch/www/learnintouch.com/engine/modules/backup/batchBackup.php /home/learnintouch/www/learnintouch.com/account/data/backup/file/backup_db_db_learnintouch_2011-12-01_23-39.sql 0 1 0 0 1 /home/learnintouch/www/learnintouch.com/account/setup/specific.php > /dev/null
PHP Notice: Undefined variable: argc in /home/learnintouch/engine/modules/backup/batchBackup.php on line 11
PHP Fatal error: Call to undefined function: reporterror() in /home/learnintouch/engine/modules/backup/batchBackup.php on line 20

Il faut maintenant que je vois pourquoi cette dernière erreur.

Merci :-)

cassiopee
03/12/2011, 11h21
Humm, as-tu essayé en donnant le chemin complet du fichier binaire "php" ?

Par exemple "/usr/local/bin/php" au lieu de "php" tout court ?

Accessoirement, je doute que la partie ", referer: http://www.learnintouch.com/engine/m...kup/backup.php"
fasse partie de la commande à taper.

stephaneeybert
02/12/2011, 12h01
J'ai trouvé le fichier /usr/local/portage-ovh/dev-lang/php5-ovh/php5-ovh-5.3.8.ebuild

stephaneeybert
02/12/2011, 11h27
Mon ./configure a l'option: './configure' '--disable-cli'

Il va falloir que je le recompile ou il y a un patch à appliquer ?

stephaneeybert
02/12/2011, 00h47
Je dois executer php sous la ligne de commande, et apparemment il n'est pas vraiment installé.

vps13495 stephane # php -c /usr/local/lib64/php53/php.ini -d include_path='/home/learnintouch/www/learnintouch.com/engine/setup/' -f /home/learnintouch/www/learnintouch.com/engine/modules/backup/batchBackup.php /home/learnintouch/www/learnintouch.com/account/data/backup/file/backup_db_db_learnintouch_2011-12-01_23-39.sql 0 1 0 0 1 /home/learnintouch/www/learnintouch.com/account/setup/specific.php > /dev/null &, referer: http://www.learnintouch.com/engine/m...kup/backup.php
[1] 32170
bash: php: command not found
bash: ,: command not found
[1]+ Exit 127 php -c /usr/local/lib64/php53/php.ini -d include_path='/home/learnintouch/www/learnintouch.com/engine/setup/' -f /home/learnintouch/www/learnintouch.com/engine/modules/backup/batchBackup.php /home/learnintouch/www/learnintouch.com/account/data/backup/file/backup_db_db_learnintouch_2011-12-01_23-39.sql 0 1 0 0 1 /home/learnintouch/www/learnintouch.com/account/setup/specific.php > /dev/null
vps13495 stephane #

Je n'ai rien vu dans les guides..

Quelqu'un sait il comment dois je installer ça ?

Je suis sur une distribution: Release 2 OVH (Gentoo) - 64 bits (English)

Merci.

Stephane