{"id":15951,"date":"2025-02-10T13:33:06","date_gmt":"2025-02-10T11:33:06","guid":{"rendered":"https:\/\/www.beseit.net\/?p=15951"},"modified":"2025-02-10T20:51:38","modified_gmt":"2025-02-10T18:51:38","slug":"executar-un-script-python-des-de-php","status":"publish","type":"post","link":"http:\/\/www.beseit.net\/?p=15951","title":{"rendered":"Executar un script Python des de PHP:"},"content":{"rendered":"\n<p>Executar un script Python des de PHP:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\/\/ Executa un script Python i captura la seva sortida\n$output = shell_exec('python3 script.py');\necho \"Sortida de Python: \" . $output;\n?&gt;<\/code><\/pre>\n\n\n\n<p>Contingut de <code>script.py<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>print(\"Hola des de Python!\")\n<\/code><\/pre>\n\n\n\n<p>Aquest metode permet fer projecte mitjans amb Python?<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Aquest m\u00e8tode permet integrar Python amb PHP i pot ser molt \u00fatil per a projectes mitjans. Utilitzant aquest m\u00e8tode, pots aprofitar les capacitats de Python per a tasques espec\u00edfiques mentre utilitzes PHP per gestionar la interf\u00edcie web i altres funcionalitats del servidor.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Alguns casos d&#8217;\u00fas comuns:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>An\u00e0lisi de dades<\/strong>: Utilitza Python per realitzar an\u00e0lisis de dades complexos i presenta els resultats a trav\u00e9s d&#8217;una interf\u00edcie web constru\u00efda amb PHP.<\/li>\n\n\n\n<li><strong>Machine Learning<\/strong>: Executa models de Machine Learning amb Python i mostra els resultats en una p\u00e0gina web PHP.<\/li>\n\n\n\n<li><strong>Automatitzaci\u00f3 de tasques<\/strong>: Utilitza scripts Python per automatitzar tasques com l&#8217;enviament de correus electr\u00f2nics, la generaci\u00f3 d&#8217;informes, etc.<\/li>\n\n\n\n<li><strong>Gesti\u00f3 de fitxers<\/strong>: Utilitza Python per a la manipulaci\u00f3 avan\u00e7ada de fitxers, com ara la lectura, l&#8217;escriptura i el processament de dades, i gestiona la interf\u00edcie amb PHP.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Consideracions:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Rendiment<\/strong>: Assegura&#8217;t que els scripts Python no s&#8217;executin durant massa temps per evitar bloquejos o retards en la resposta del servidor web.<\/li>\n\n\n\n<li><strong>Seguretat<\/strong>: Verifica que els scripts Python no tinguin vulnerabilitats de seguretat i que nom\u00e9s acceptin dades segures des del client.<\/li>\n\n\n\n<li><strong>Depuraci\u00f3<\/strong>: Utilitza eines de depuraci\u00f3 adequades per a ambd\u00f3s llenguatges per assegurar-te que pots identificar i solucionar errors r\u00e0pidament.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">1 Punts clau per executar Python des de PHP<\/h2>\n\n\n\n<p>Executa aix\u00f2 al terminal per assegurar-te que Python funciona correctament:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>C:\\Users\\urqte\\AppData\\Local\\Programs\\Python\\Python313\\python.exe C:\\AppServ\\www\\python\\script.py\n<\/code><\/pre>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0);color:#f61313\" class=\"has-inline-color\">Si funciona aqu\u00ed, per\u00f2 no des de PHP, el problema \u00e9s Apache o PHP.<\/mark><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2 Configura <code>script.py<\/code> (Sortida en UTF-8)<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>import sys\nsys.stdout.reconfigure(encoding='utf-8')  # Garanteix que la sortida sigui UTF-8\n\nprint(\"Content-Type: text\/html; charset=utf-8\\n\")\nprint(\"Hola des de Python!\")\nprint(\"Versi\u00f3 de Python:\", sys.version)\n<\/code><\/pre>\n\n\n\n<p> 3 <strong>Executa Python des de PHP<\/strong><\/p>\n\n\n\n<p>Assegura\u2019t que el teu <code>python.php<\/code> t\u00e9 la ruta correcta i forci <code>UTF-8<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nheader('Content-Type: text\/html; charset=utf-8'); \/\/ Assegura UTF-8\nini_set('display_errors', 1);\nini_set('display_startup_errors', 1);\nerror_reporting(E_ALL);\n\n$python_path = 'C:\\\\Users\\\\urqte\\\\AppData\\\\Local\\\\Programs\\\\Python\\\\Python313\\\\python.exe';\n$script_path = 'C:\\\\AppServ\\\\www\\\\python\\\\script.py';\n\n$command = escapeshellarg($python_path) . ' ' . escapeshellarg($script_path) . ' 2>&amp;1';\n$output = shell_exec($command);\n\n$output = mb_convert_encoding($output, 'UTF-8', 'auto'); \/\/ Converteix a UTF-8 per si de cas\necho \"Sortida de Python: &lt;br>\" . nl2br($output);\n?>\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">4 Comprova que <code>shell_exec()<\/code> est\u00e0 habilitat<\/h2>\n\n\n\n<p>Executa aix\u00f2 en un arxiu PHP (<code>test.php<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nif (function_exists('shell_exec')) {\n    echo \"\u2705 shell_exec() est\u00e0 habilitat!\";\n} else {\n    echo \"\u274c shell_exec() EST\u00c0 DESACTIVAT! Habilita\u2019l a php.ini.\";\n}\n?>\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">5\ufe0f\u20e3 <strong>Reinicia Apache i esborra la mem\u00f2ria cau<\/strong><\/h1>\n\n\n\n<p>Despr\u00e9s de fer canvis a <code>php.ini<\/code> o <code>httpd.conf<\/code>, <strong>reinicia Apache<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Executar un script Python des de PHP: Contingut de script.py Aquest metode permet fer projecte mitjans amb Python? Aquest m\u00e8tode permet integrar Python amb PHP i pot ser molt \u00fatil per a projectes mitjans. Utilitzant aquest m\u00e8tode, pots aprofitar les &hellip; <a href=\"http:\/\/www.beseit.net\/?p=15951\">Continua llegint <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":8179,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-15951","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bloc-de-notes"],"_links":{"self":[{"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/15951","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=15951"}],"version-history":[{"count":3,"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/15951\/revisions"}],"predecessor-version":[{"id":15956,"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/15951\/revisions\/15956"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/media\/8179"}],"wp:attachment":[{"href":"http:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=15951"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=15951"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=15951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}