Déploiement d'un websocket avec ratchet SSL

Résolu
franksh Messages postés 54 Date d'inscription dimanche 8 juillet 2018 Statut Membre Dernière intervention 23 août 2024 - 13 août 2024 à 12:40
luckydu43 Messages postés 3973 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 18 décembre 2024 - 26 août 2024 à 14:27

Bonjour, et excellente début de semaine a vous, quelqu'un saurait étape par étapes comment déployer un chat réaliser avec ratchet.me de websocket sur un site déjà en ligne ?
j'ai lu énormément de sujet sur le web mais n'arrive toujours pas à comprendre,
mon cas:

J'ai un chat en localhost qui run sur ratchet websocket en ws, maintenant que tout fonctionne je voulais l'intégrer sur mon site
mais j'arrête pas de tomber sur des obstacles, apparemment le web socket nécessite un serveur comme apache ou nginx, 
dans mon cas je pas accès à la config d'apache chez mon hébergeur

j'ai donc essayé de passer par un vps installer sur debian, qui est tout nouveau pour moi (les commande etc.),
ma question est avec nginx comment je procède dois-je transfert tout mon code source sur debian où  ? comment faire le php bin/server.php, si le code en ligne, je sais même pas si ces des bonnes questions.

ls de l'herbergement du site

/
  => src/ chat.php

  => bin/ server.php (pour un php bin/server.php sur le terminal en localhost)

/ chatroom.php (ou jai fait un var co = new WebSocket(ws...))

Je suis évidement a votre disposition pour mes codes source ou tout autre question.

Merci d'avance

A voir également:

8 réponses

luckydu43 Messages postés 3973 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 18 décembre 2024 980
Modifié le 13 août 2024 à 18:40

Bonjour,

L'idée du VPS est bonne, voici quelques pistes pour tout câbler ensemble :

Déjà, il faut que tu aies un lien SSH vers ton VPS. Tout ce qui suit est à faire dans Putty par exemple.
On va installer les dépendances nécessaires à Ratchet et NGinX.

sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install php php-cli php-sockets php-mbstring nginx -y

Envoie les fichiers (par FTP avec Filezilla par exemple) de ton chat Ratchet local dans le dossier /var/www/chat de ton VPS

Ouvre le fichier /etc/nginx/sites-available/default avec nano ou vim depuis ta console SSH et ajoute :

server {
    listen 80;
    server_name IP_OU_DOMAINE_DU_VPS;
    
    location / {
        proxy_pass http://localhost:8080
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Cela fait faire tourner le chat Ratchet par NGinX sur le port 8080 en local.
Si tu as un certificat SSL (Let's Encrypt par ex), mets plutôt ça :

server {
    listen 443 ssl;
    server_name IP_OU_DOMAINE_DU_VPS;

    ssl_certificate /etc/letsencrypt/live/DOMAINE_DU_VPS/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/DOMAINE_DU_VPS/privkey.pem;

    location / {
        proxy_pass http://localhost:8080
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Toujours depuis la console SSH, on va créer un service pour rendre ça maintenable facilement avec les commandes systemctl (j'ai mis vim mais ça peut être nano) :

sudo vim /etc/systemd/system/ratchet.service

Mettre le code suivant et enregistrer :

[Unit]
Description=Ratchet WebSocket Server
After=network.target

[Service]
ExecStart=/usr/bin/php /var/www/chat/bin/server.php
WorkingDirectory=/var/www/chat/
Restart=always
User=www-data
Group=www-data
StandardOutput=null
StandardError=journal
RestartSec=3

[Install]
WantedBy=multi-user.target

Ensuite on active tout ça :

sudo systemctl daemon-reload
sudo systemctl enable ratchet
sudo systemctl start ratchet
sudo systemctl restart nginx

Avec ça, il suffira simplement des systemctl status, restart, start et stop sur ratchet et nginx.

Pour gérer les logs même en ayant quitté la console :

nohup php bin/server.php > /var/log/ratchet.log 2>&1 &

La partie VPS est finie, il faut maintenant le câbler au site web. Modifie l’URL du WebSocket dans ton code JavaScript :

var ws = new WebSocket("ws://IP_OU_DOMAINE_DU_VPS:8080");

Si tu as configuré NGinX avec un certificat SSL, c'est :

var ws = new WebSocket("wss://IP_OU_DOMAINE_DU_VPS:443");

Tu n'as plus qu'à ouvrir F12 sur ton site web pour vérifier que la connexion WebSocket est bien établie avec le VPS.
Tu peux aussi dans le même temps regarder les logs de ton chat sur le VPS (cette commande est géniale, tu vois en temps réel l'arrivée des logs) :

tail -f /var/log/ratchet.log

Tiens au jus !


1
luckydu43 Messages postés 3973 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 18 décembre 2024 980
22 août 2024 à 09:52

@franksh StatutMembre des news ?

0
luckydu43 Messages postés 3973 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 18 décembre 2024 980
Modifié le 23 août 2024 à 12:49

Il est possible d'utiliser le même certificat pour le site ET pour le VPS à quelques conditions :

- avoir la main sur le certificat, notamment pour ce qui est de la gestion de son expiration

- que le certificat soit un certificat SAN ou Wildcard.

Si tu n'as pas ces informations, reste en HTTP pour le moment sur ton VPS.

J'assumais que _tout_ ce que j'avais mentionné était fait : apporte plus de précisions sur ce que tu as fait, pas fait, où les commandes on été tapées pour quel résultat, quelles commandes donnent quels logs, renvoie l'intégralité des logs demandés (status notamment) : je ne peux pas consacrer plus de 10 min à un topic ! Ma réponse est forcément plus longue qu'avec tous ces éléments connus.

  1. Reprend la conf /etc/nginx/nginx.conf au message #4, elle vaut pour un usage HTTP seul
  2. Concernant le fichier /etc/nginx/sites-available/ratchet, voici une conf adaptée à du HTTP seul :
  3. server {
        listen 80;
        server_name IP_OU_DOMAINE_DU_VPS;
        root /var/www/chat;
        index index.html;
    
        location / {
            try_files $uri $uri/ =404;
        }
    
        location /chat {
            proxy_pass http://127.0.0.1:8080
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
    }
    
  4. Redémarre nginx et ratchet, vérifie les status
  5. Si ratchet n'est pas reconnu en service, tu n'as pas créé le service (reprends message #1), il faut démarrer en manuel :
  6. php /var/www/chat/server.php
  7. Vérifie si ça écoute sur le port 8080 (les 2 commandes se valent) :
  8. sudo netstat -tuln | grep 8080
    sudo ss -tuln | grep 8080
  9. Pour savoir si un firewall est actif (le service varie suivant l'OS du VPS) :
  10. sudo systemctl status ufw
    sudo systemctl status firewalld
    sudo systemctl status iptables
  11. Dès qu'il est connu, remplace "status" par "stop" pour le désactiver
  12. Vérifie la configuration webSock de ton chat ratchet .php (dans /var/www/chat) :
  13. $webSock = new React\Socket\Server('127.0.0.1:8080', $loop);
  14. essaie la commande wscat ainsi (des fois que localhost soit résolu sur ::1 et pas 127.0.0.1)  :
  15. wscat -c ws://127.0.0.1:8080

1
franksh Messages postés 54 Date d'inscription dimanche 8 juillet 2018 Statut Membre Dernière intervention 23 août 2024 1
23 août 2024 à 14:37

Je me suis  dis la même mais moi je voulais vraiment tout ce qui connexion au db rester cote site ce possible ça non ? et pour le câlin ce sensé être un emojie :*

1
luckydu43 Messages postés 3973 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 18 décembre 2024 980
23 août 2024 à 18:39

Okay ! Merci pour le câlin alors :-D Mets des like sur les réponses qui te conviennent et sélectionne la réponse qui répond le mieux à ta question, c'est ça qui me fait le plus plaisir sur le forum :-)

Le chat ratchet semble avoir besoin d'une connexion BDD en tout cas, relis le code et vois où ça appelle. En fonction, partage la ligne en retirant les informations sensibles, on te dira quels drivers php installer et comment

0
franksh Messages postés 54 Date d'inscription dimanche 8 juillet 2018 Statut Membre Dernière intervention 23 août 2024 1 > luckydu43 Messages postés 3973 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 18 décembre 2024
23 août 2024 à 20:34

le code du bin/server.php 

namespace MyApp;
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
require dirname(__DIR__) . '/vendor/autoload.php';

class Chat implements MessageComponentInterface
{
  protected $clients;

  public function __construct()
  {
    $this->clients = new \SplObjectStorage;
    echo "serveur starter";
  }

  public function onOpen(ConnectionInterface $conn)
  {
    $this->clients->attach($conn);
    echo "nouvelle conn";
  }

  public function onMessage(ConnectionInterface $from, $msg)
  {
    $numRecv = count($this->clients) - 1;
    echo sprintf('Connection %d sending message "%s" to %d other connection%s' . "\n"
        , $from->resourceId, $msg, $numRecv, $numRecv == 1 ? '' : 's');
        $data = json_decode($msg, true);

    if($data['command'] == 'private')
    {
      // ici j'appel le bd en require et je fait une insert normal dans le bd en local sa fonctionne aucun soucis
    }
  }
}

$app = new \Ratchet\Http\HttpServer(
    new \Ratchet\WebSocket\WsServer(
        new \MyApp\Chat()
    )
);

$loop = \React\EventLoop\Factory::create();

$secure_websockets = new \React\Socket\Server('0.0.0.0:8081', $loop); // ici 8080 return already used port 
$secure_websockets = new \React\Socket\SecureServer($secure_websockets, $loop, [
    'local_cert' => '/chemin/xxx.crt',
    'local_pk' => '/chemin/xxx.key',
    'verify_peer' => false
]);

$secure_websockets_server = new \Ratchet\Server\IoServer($app, $secure_websockets, $loop);
$secure_websockets_server->run();
quand je fait php bin/server.php sa mouline un peut et sa met ça Erreur!: SQLSTATE[HY000] [2002] Connection timed out
0
franksh Messages postés 54 Date d'inscription dimanche 8 juillet 2018 Statut Membre Dernière intervention 23 août 2024 1
22 août 2024 à 22:07

Merci, du retour

je tombe sur une erreur au niveau du console "Websocket conne.. to wss.. failed"

Ls du dossier

quand je tape le server_name dans le navigateur je tombe sur un 502 Bad Gateway, je sais plus quoi faire.

encore merci

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
luckydu43 Messages postés 3973 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 18 décembre 2024 980
Modifié le 23 août 2024 à 11:06

"Websocket conne.. to wss.. failed", tu as utilisé une configuration HTTPS ?

Je pars donc du principe que tu as un certificat situé dans :

/etc/nginx/ssl/your_certificate.crt;
/etc/nginx/ssl/your_certificate.key;

Il faut voir ce que disent les logs du VPS.

Ouvre un terminal SSH rien que pour ça et lance un

sudo tail -f /var/log/nginx/error.log

A chaque connexion depuis le navigateur ou via le site Web, tu verras ce qui gratte ton proxy NGinX.

Ouvre une autre console SSH et fais les vérifications de base de la configuration.

Déjà, comme tout serveur Apache ou assimilé, on ne touche pas directement à /etc/nginx/nginx.conf. Au mieux on change des paramètres de taille POST par exemple. La configuration des ports d'écoute et des VirtualHost se fait depuis un fichier dédié à la configuration de ton site.

Si tu as touché à /etc/nginx/nginx.conf, remets-le d'origine (avec vim, nano ou depuis le FTP) :

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    # Logs
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    # Gzip compression
    gzip on;
    gzip_disable "msie6";

    # Include the virtual host configurations
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

Si ça n'a pas été fait, fais un :

touch /etc/nginx/sites-available/ratchet

Mets dans ce fichier tout ceci :

server {
    listen 80;
    server_name IP_OU_DOMAINE_DU_VPS;

    # Rediriger tout le trafic HTTP vers HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name IP_OU_DOMAINE_DU_VPS;

    # SSL configuration
    ssl_certificate /etc/nginx/ssl/your_certificate.crt;
    ssl_certificate_key /etc/nginx/ssl/your_certificate.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    # Répertoire du chat Ratchet
    root /var/www/chat;

    index index.html;

    # Redirection 404 si tentative d'accès à la racine
    location / {
        try_files $uri $uri/ =404;
    }

    # WebSocket reverse proxy configuration
    location /chat {
        proxy_pass http://127.0.0.1:8080
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # Logs
    access_log /var/log/nginx/ratchet_access.log;
    error_log /var/log/nginx/ratchet_error.log;
}

Une fois ce fichier créé, il faut "l'activer". NGinX ne voit que les fichiers dans sites-enabled, on ne va pas le copier mais créer un lien symbolique (c'est ce qui est couramment fait) :

sudo ln -s /etc/nginx/sites-available/ratchet /etc/nginx/sites-enabled/

A chaque modification des paramètres NGinX, n'oublie pas de le redémarrer, je t'ai mis les commandes plus haut. Restart également ratchet dans le doute.

Une fois les 2 redémarrés, vérifie leur statut avec :

systemctl status nginx
systemctl status ratchet

Vérifie si tu as bien un processus en écoute sur le port 8080 :

sudo netstat -tulnp | grep 8080

Pour tester plus loin, il y a un outil sympa : wscat.

Il y a une version en ligne.

Pour installer wscat, il suffit d'un :

sudo npm install -g wscat

Si tu l'installes sur ton VPS pour tester ton webSocket en local avant de tester l'accès externe, lance :

wscat -c ws://localhost:8080

Pour tester depuis l'extérieur, installe wscat sur le terminal concerné puis lance :

wscat -c wss://IP_OU_DOMAINE_DU_VPS/chat

Tiens au jus !


0
franksh Messages postés 54 Date d'inscription dimanche 8 juillet 2018 Statut Membre Dernière intervention 23 août 2024 1
Modifié le 23 août 2024 à 11:47

 wscat -c ws://localhost:8080


error: connect ECONNREFUSED ::1:8080
 

les logs 

2024/08/03 09:25:28 [emerg] 13958#13958: bind() to 0.0.0.0:80 failed (98: Address already in use)
2024/08/03 09:25:28 [emerg] 13958#13958: bind() to [::]:80 failed (98: Address already in use)
2024/08/03 09:25:28 [emerg] 13958#13958: bind() to 0.0.0.0:80 failed (98: Address already in use)
2024/08/03 09:25:28 [emerg] 13958#13958: bind() to [::]:80 failed (98: Address already in use)
2024/08/03 09:25:28 [emerg] 13958#13958: bind() to 0.0.0.0:80 failed (98: Address already in use)
2024/08/03 09:25:28 [emerg] 13958#13958: bind() to [::]:80 failed (98: Address already in use)
2024/08/03 09:25:28 [emerg] 13958#13958: bind() to 0.0.0.0:80 failed (98: Address already in use)
2024/08/03 09:25:28 [emerg] 13958#13958: bind() to [::]:80 failed (98: Address already in use)
2024/08/03 09:25:28 [emerg] 13958#13958: still could not bind()
2024/08/04 11:47:22 [error] 14177#14177: *189 client intended to send too large body: 10485761 bytes, client: 195.170.172.128, server: _, request: "POST / HTTP/1.1", host: "51.79.50.43"

j'ai pas installer un certificat, je voulu utiliser celle du site qui est en ligne ? 

je doit l'installer ? je sais même pas comment

0
franksh Messages postés 54 Date d'inscription dimanche 8 juillet 2018 Statut Membre Dernière intervention 23 août 2024 1
23 août 2024 à 13:49

Vous mériter un câlin ????

J'ai finalement installer un certificate, et je peux me connecter en wss aver un 

var conn = new WebSocket('wss://nom_de_domaine.fr/');
    conn.onopen = function(e) {
        console.log("ce good");
    };

la console return un ce good en https donc ce cote la ce bon mais

quand je fait un php /var/www/chat/bin/server.php j'ai ça 

Erreur!: could not find driver<br/>myfgfg_vps@.....:/var/www/chat/bin$
0
luckydu43 Messages postés 3973 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 18 décembre 2024 980
23 août 2024 à 14:20

C'est pas "complet" mais je vois l'idée.

Vous mériter un câlin ???? : c'est une façon intéressante de lire o__O

L'erreur vient du VPS, si le chat tape sur une BDD il vaut installer le driver PHP pour cette BDD. Si non, il y a du code à changer.

0
luckydu43 Messages postés 3973 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 18 décembre 2024 980
Modifié le 26 août 2024 à 13:03

Merci pour le bin/server.php (message #12).

  • 8080 used

En premier lieu, le "8080 return already used port" est trivial avec les bonnes commandes.
Pour lister les processus sur le port 8080 (une des 3) :

sudo lsof -i :8080
sudo netstat -tulnp | grep :8080
sudo ss -tulnp | grep :8080

Identifie le PID (1 à 5 chiffres) du processus en LISTEN et force son arrêt avec :

sudo kill -9 PID

Vérifie avec la première commande.
Ceci fait ton chat Ratchet pourra à nouveau tourner sur le port 8080.

  • Taper la BDD.

Tout est à faire sur le serveur hébergeant le site web et la BDD (si j'ai bien compris, c'est le cas)
C'est moins trivial parce que ça peut venir de différentes causes : firewall, configuration mySQL, droits de l'user MySQL. En bonus, forcer mySQL à utiliser SSL.

  • firewall

Il faut ajouter une règle pour autoriser l'entrée sur le port 3306.

# ufw
sudo systemctl status ufw
sudo ufw allow 3306/tcp

#iptables
sudo systemctl status iptables
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

# firewalld
sudo firewall-cmd --state
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
  • Configuration MySQL

Dans /etc/mysql/my.cnf ou /etc/my.cnf, changer

bind-address = 127.0.0.1

en

bind-address = 0.0.0.0

Ca permet d'écouter sur toutes les interfaces réseau. Si tu mets une interface spécifique, tu perds le localhost.
Redémarre mysql après ça

sudo systemctl restart mysql
  • Droits de l'user

Connecte toi ainsi pour éviter de logger le mdp dans l'history du shell :

sudo mysql -u USER_ADMIN -p
[Entrée]
MDP
[Entrée]

Une fois ici, liste les droits et rôles déjà présents pour te donner une idée de la conf.

-- Lister les users
SELECT User, Host FROM mysql.user;
-- Lister les droits d'un user
SHOW GRANTS FOR 'username'@'host';

Tu peux supprimer un user et le recréer à ta sauce.
Ce qu'il faut savoir c'est qu'un user BDD pour un site doit avoir des droits limités, il est différent de l'user root par exemple. Aussi, on différencie un user venant de localhost d'un user venant de l'extérieur, pour ton site tu auras donc à minima 2 users.

-- Pour supprimer un utilisateur (ça ne touche pas la table ou la base, juste l'user) :
DROP USER 'nom_utilisateur'@'hôte';
-- Vérifie avec :
SELECT user, host FROM mysql.user;
-- Pour créer un user non root :
CREATE USER 'site_web_user'@'localhost' IDENTIFIED BY 'secure_password1';
CREATE USER 'chat_ratchet_user'@'%' IDENTIFIED BY 'secure_password2';
-- Pour lui affecter ses droits ((filtre encore plus les droits selon tes besoins) :
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, LOCK TABLES ON `nom_de_la_base`.* TO 'site_web_user'@'localhost' REQUIRE SSL;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, LOCK TABLES ON `nom_de_la_base`.* TO 'chat_ratchet_user'@'%' REQUIRE SSL;

Le REQUIRE SSL est pour plus bas, retire le pour le moment.
Finis par

FLUSH PRIVILEGES;
  • Bonus : Configuration SSL

Dans le my.cnf identifié plus haut, mettre

ssl-ca = /chemin/vers/ca-cert.pem
ssl-cert = /chemin/vers/server-cert.pem
ssl-key = /chemin/vers/server-key.pem

Redémarre mysql.

retour sur le VPS


Pour ce qui est un exemple de l'utilisation de SSL avec MySQL dans ton chat :
Ligne 34 :

$mysqli = new \mysqli('host', 'user', 'password', 'database', 3306);
$mysqli->ssl_set('/chemin/client-key.pem', '/chemin/client-cert.pem', '/chemin/ca-cert.pem', NULL, NULL);
$mysqli->real_connect();
if ($mysqli->connect_error) {
    echo "Échec de la connexion MySQL : " . $mysqli->connect_error;
    return;
}
$stmt = $mysqli->prepare("INSERT INTO table_name (column1, column2) VALUES (?, ?)");
$stmt->bind_param('ss', $data['field1'], $data['field2']);
$stmt->execute();
$stmt->close();
$mysqli->close();

retour sur le serveur du site web et de la bdd

Vérifie la connexion SSL avec MySQL avec :

sudo mysql -u USER_ADMIN -p
[Entrée]
MDP
[Entrée]
SHOW STATUS LIKE 'Ssl_cipher';

0
luckydu43 Messages postés 3973 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 18 décembre 2024 980
Modifié le 26 août 2024 à 15:00

Il convient après chaque systemctl restart (ou start) de faire un status pour vérifier la bonne exécution du service.

Aussi, dans le cas où le .php sur le VPS n'arrive pas à taper la BDD pour cause de pilote, il faut les installer via SSH sur le VPS.

D'abord connaitre la version de PHP

php -v

Ensuite on installe les drivers mySQL :

sudo apt update
#Selon la version de PHP
sudo apt install php7.4-mysql
sudo apt install php8.0-mysql
sudo apt install php8.1-mysql
# on redémarre tout
sudo systemctl restart nginx
sudo systemctl restart ratchet

Une fois redémarré, tu peux vérifier rapidement si l'extension mysql est présente dans php en créant un script info.php dans /var/www/html/chat (à supprimer après) :

<?php
phpinfo();
?>
php ./info.php
0