Système: OpenBSD 4.9
Packages installés: php5-core-5.2.17, php5-extensions-5.2.17, php5-gd-5.2.17, php5-mysql-5.2.17, php5-snmp-5.2.17, mysql-server-5.1.54p3, mysql-client-5.1.54p0
Bonjour,
J'ai un script de tests placé dans /var/www/htdocs avec /var/www le chroot d'Apache.
J'ai aussi téléchargé adodb5 que j'ai placé dans /var/www
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <?php include('../adodb5/adodb.inc.php'); $conn = &ADONewConnection('mysql'); $conn->PConnect('localhost','cacti','cactipw','cactidb'); $sql = 'select hostname,description from host;'; $recordSet = &$conn->Execute($sql); if (!$recordSet) print $conn->ErrorMsg(); else while (!$recordSet->EOF) { print $recordSet->fields[0].' '.$recordSet->fields[1].'<BR>'; $recordSet->MoveNext(); } $recordSet->Close(); $conn->Close(); ?>
Mon serveur mysql est lancé par la commande suivante
Et j'ai configuré /etc/my.cnf (avec / non chrooté)
Code : Sélectionner tout - Visualiser dans une fenêtre à part # /usr/local/bin/mysqld_safe --user=_mysql --pid-file=/var/mysql/mysql.pid &
Lorsque mon serveur mysqld est démarré, il crée mysql.sock dans /var/www/var/run/mysql
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [mysqld] socket = /var/www/var/run/mysql/mysql.sock
J'ai fais un lien pour que mysql.sock soit aussi joignable dans /var/run/mysql/# ls -l /var/www/var/run/mysql/
srwxrwxrwx 6 _mysql daemon 0 Oct 4 23:04 mysql.sock
Code : Sélectionner tout - Visualiser dans une fenêtre à part # ln /var/www/var/run/mysql/mysql.sock /var/run/mysql/mysql.sock
Cas 1: Le script est executé hors de toute considération chroot => FONCTIONNE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 # /usr/local/bin/php /var/www/htdocs/adotest.php 127.0.0.1 System1<BR>1.1.1.1 System2<BR>
Cas 2: Le script est executé en http par l'intermédiare d'Apache (qui est chrooté) url http://localhost/adotest.php => FONCTIONNE
Case 3: Le script est executé en ligne de commande et simule un utilisateur dans le chroot d'Apache => ECHOUE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 127.0.0.1 System1 1.1.1.1 System2
Vous remarquerez que le script adotest.php est parvenu à inclure /adodb5/drivers/adodb-mysql.inc.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 # /usr/sbin/chroot /var/www /bin/php /htdocs/adotest.php PHP Fatal error: Call to undefined function mysql_pconnect() in /adodb5/drivers/adodb-mysql.inc.php on line 383 Fatal error: Call to undefined function mysql_pconnect() in /adodb5/drivers/adodb-mysql.inc.php on line 383
J'ai aussi copié /etc/my.cnf dans /var/www/etc mais changé le chemin pour le client mysql
J'ai pensé qu'il y avait un problème de connexion mysql, j'ai donc copié le client mysql dans le chroot (/var/www/bin) ainsi que les librairies dynamiques qui lui sont liées. Et la connexion fonctionne bien !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [client] socket = /var/run/mysql/mysql.sock
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 # /bin/mysql -u cacti -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 6
Je ne comprends absolument pas pourquoi dans Cas 3 la connexion vers mysql ne s'effectue pas.
Comme vous pouvez l'imaginer j'ai énormément cherché
Merci
Partager