Executar un script Python des de PHP:

Executar un script Python des de PHP:

<?php
// Executa un script Python i captura la seva sortida
$output = shell_exec('python3 script.py');
echo "Sortida de Python: " . $output;
?>

Contingut de script.py

print("Hola des de Python!")

Aquest metode permet fer projecte mitjans amb Python?


Aquest mètode permet integrar Python amb PHP i pot ser molt útil per a projectes mitjans. Utilitzant aquest mètode, pots aprofitar les capacitats de Python per a tasques específiques mentre utilitzes PHP per gestionar la interfície web i altres funcionalitats del servidor.

Alguns casos d’ús comuns:

  • Anàlisi de dades: Utilitza Python per realitzar anàlisis de dades complexos i presenta els resultats a través d’una interfície web construïda amb PHP.
  • Machine Learning: Executa models de Machine Learning amb Python i mostra els resultats en una pàgina web PHP.
  • Automatització de tasques: Utilitza scripts Python per automatitzar tasques com l’enviament de correus electrònics, la generació d’informes, etc.
  • Gestió de fitxers: Utilitza Python per a la manipulació avançada de fitxers, com ara la lectura, l’escriptura i el processament de dades, i gestiona la interfície amb PHP.

Consideracions:

  • Rendiment: Assegura’t que els scripts Python no s’executin durant massa temps per evitar bloquejos o retards en la resposta del servidor web.
  • Seguretat: Verifica que els scripts Python no tinguin vulnerabilitats de seguretat i que només acceptin dades segures des del client.
  • Depuració: Utilitza eines de depuració adequades per a ambdós llenguatges per assegurar-te que pots identificar i solucionar errors ràpidament.

1 Punts clau per executar Python des de PHP

Executa això al terminal per assegurar-te que Python funciona correctament:

C:\Users\urqte\AppData\Local\Programs\Python\Python313\python.exe C:\AppServ\www\python\script.py

Si funciona aquí, però no des de PHP, el problema és Apache o PHP.

2 Configura script.py (Sortida en UTF-8)

import sys
sys.stdout.reconfigure(encoding='utf-8')  # Garanteix que la sortida sigui UTF-8

print("Content-Type: text/html; charset=utf-8\n")
print("Hola des de Python!")
print("Versió de Python:", sys.version)

3 Executa Python des de PHP

Assegura’t que el teu python.php té la ruta correcta i forci UTF-8:

<?php
header('Content-Type: text/html; charset=utf-8'); // Assegura UTF-8
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$python_path = 'C:\\Users\\urqte\\AppData\\Local\\Programs\\Python\\Python313\\python.exe';
$script_path = 'C:\\AppServ\\www\\python\\script.py';

$command = escapeshellarg($python_path) . ' ' . escapeshellarg($script_path) . ' 2>&1';
$output = shell_exec($command);

$output = mb_convert_encoding($output, 'UTF-8', 'auto'); // Converteix a UTF-8 per si de cas
echo "Sortida de Python: <br>" . nl2br($output);
?>

4 Comprova que shell_exec() està habilitat

Executa això en un arxiu PHP (test.php):

<?php
if (function_exists('shell_exec')) {
    echo "✅ shell_exec() està habilitat!";
} else {
    echo "❌ shell_exec() ESTÀ DESACTIVAT! Habilita’l a php.ini.";
}
?>

5️⃣ Reinicia Apache i esborra la memòria cau

Després de fer canvis a php.ini o httpd.conf, reinicia Apache