Bug #74965 [Nab]: exec() does'nt work anymore since PHP 7.0 was updated to version 7.0.21.

From: Date: Mon, 24 Jul 2017 08:36:34 +0000
Subject: Bug #74965 [Nab]: exec() does'nt work anymore since PHP 7.0 was updated to version 7.0.21.
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-210257@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=74965&edit=1 ID: 74965 Updated by: kalle@php.net Reported by: jean-christophe dot ventre at wanadoo dot fr Summary: exec() does'nt work anymore since PHP 7.0 was updated to version 7.0.21. Status: Not a bug Type: Bug Package: *General Issues Operating System: windows server 2012R2 PHP Version: 7.0.21 Block user comment: N Private report: N New Comment: Hi Jean, the reason why it doesn't work has nothing to do with PHP, but the operating system that PHP is installed off. In this case Windows, you will need to register extension as an executable before calling that extension directly will work. For example to make the script work for .php files, you would need to do: 1) Modify PATH to include a location to where PHP is installed 2) Modify PATHEXT to include .php 3) Run 'assoc .php=phpfile' 4) Run 'ftype phpfile="C:\path\to\php" -f "%1" -- %~2' The same concept can be applied to Python, and that was probably the case on your host system, but it probably doesn't work because PHP7 was installed in a different place. You can see more about this in the manual: http://php.net/manual/en/install.windows.legacy.index.php#install.windows.legacy.commandline Thank you for using PHP! Previous Comments: ------------------------------------------------------------------------ [2017-07-24 08:14:45] jean-christophe dot ventre at wanadoo dot fr Thanks for your help,but $cmd='.\assets\python\service-account.py C:\\Python27\\python.exe'; exec("$cmd", $output); is working perfectly well on three differents servers and php configurations since 2 years now. however, you are right, $cmd='C:\\Python27\\python.exe .\assets\python\service-account.py '; exec("$cmd", $output); works as well. The two syntaxes work, not so sure one of them must be prohibited ? Whatever, the code was working perfectly well until the php 7 update from 7.0.0 to 7.0.21 and i am still looking why ------------------------------------------------------------------------ [2017-07-22 08:41:01] ab@php.net Obvious mistake in the command. Thanks. ------------------------------------------------------------------------ [2017-07-21 15:04:45] kalle@php.net Are you sure you didn't mean $cmd to be: $cmd='C:\\Python27\\python.exe .\assets\python\test.py'; The only other way that calling '.\asserts\python\test.py' as an executable has to do with what executable is registered to execute .py files, which PHP does nothing about on Windows. ------------------------------------------------------------------------ [2017-07-21 14:11:04] jean-christophe dot ventre at wanadoo dot fr Description: ------------ //googleApiKey : using a python script this allow the final user to see his own reports //without the necessity to be login in $cmd='.\assets\python\service-account.py C:\\Python27\\python.exe'; exec("$cmd", $output); $this->data['googleApiKey']=$output[0]; This script doesn't work anymore since the php update from 7.0 to 7.0.21. I do not have any error message, for example $cmd='.\assets\python\test.py C:\\Python27\\python.exe'; $mystring = exec("$cmd", $output, $return_var); echo 'result : ' .$mystring.'</br>'; echo 'return_var :'.$return_var.'</br>'; var_dump($output); will display result : return_var :1 array(0) { } where test.py : # -*-coding:Latin-1 -* import os def result(): print("resultat") if __name__ == "__main__": result() Test script: --------------- $cmd='.\assets\python\test.py C:\\Python27\\python.exe'; $mystring = exec("$cmd", $output, $return_var); echo 'result : ' .$mystring.'</br>'; echo 'return_var :'.$return_var.'</br>'; var_dump($output); where test.py : # -*-coding:Latin-1 -* import os def result(): print("resultat") if __name__ == "__main__": result() ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=74965&edit=1

« previous php.bugs (#210257) next »