Я пытаюсь запустить простой скрипт Python из XAMPP PHP, который создаст файл. Вот мой код на питоне -
#!/Python27/python
def main():
f= open("test.txt","w+")
for i in range(10):
f.write("This is line %d\r\n" % (i+1))
f.close()
if __name__== "__main__":
main()
В моем httpd.conf я изменил следующие строки:
<IfModule dir_module>
DirectoryIndex index.php index.pl index.cgi index.asp index.shtml index.html index.htm \
default.php default.pl default.cgi default.asp default.shtml default.html default.htm \
home.php home.pl home.cgi home.asp home.shtml home.html home.htm index.py
</IfModule>
AddHandler cgi-script .cgi .pl .asp .py
Я пытаюсь вызвать этот скрипт Python со своей страницы PHP следующим образом:
$my_command = escapeshellcmd('c:/xampp/htdocs/Range_Optimization/script/hello.py');
$command_output = shell_exec($my_command);
echo $my_command;
echo $command_output;
Он просто отображает путь к файлу python, т.е. вывод
echo $my_command;
Но на самом деле скрипт python не работает. При попытке запустить тот же файл .py из командной строки он работает нормально. Что мне здесь не хватает.
Я попытался переименовать папку «Range_Optimization» в «Range». Все еще не работает.
Добавьте python перед вашей командой. например. $my_command = escapeshellcmd('python c:/xampp/htdocs/Range_Optimization/script/hello.py');
Я проверил это. Это тоже не работало. Затем я перемещаю файл .py по тому же пути, что и .PHP. Тогда это сработало. Я считаю, что каким-то образом я делаю ошибку в PATH. Не очень уверен.






Согласно документации php.net/manual/en/function.escapeshellcmd.php путь к Windows, содержащий специальные символы, может быть заменен.