У меня есть скрипт Python, который выполняет следующую строку
os.system (‘mysql -H -uusername -ppwd -hipaddr -e «некоторый запрос»> filename.html’)
когда этот скрипт на Python выполняется независимо, все выглядит нормально, HTML-файл генерируется с выводом запроса.
Но когда я вызываю скрипт python из php (используя shell_exec ()), возникает проблема. «Filename.html» создается, но файл пуст. При поиске относительно этого я обнаружил, что это должно быть сделано
setsebool -P httpd_can_network_connect = 1.
В результате теперь я могу подключиться к mysql с помощью модуля mysqldb в скрипте python, который вызывается из php, который мне не нужен.
Я хочу выполнить запрос, используя команду исполнения mysql через os.system (), которая все еще остается проблемой при вызове из php.
Есть какие-нибудь предложения, чтобы я мог сделать это правильно?
Редактировать :
вот мой скрипт php
<?php
$command = escapeshellcmd('python csv_generate.py');
$output = shell_exec($command);
echo $output;
?>
вот мой скрипт на python (csv_generate.py)
import sys
import os
print "hii"query="show databases"os.system('mysql -H -uaaa -pbbb -hhostip -P3306 -e"%s" >filename.html'%(query))
При вызове из php скрипт Python выполняется и печатает hii. HTML-файл также создан, но файл пуст. Даже когда я пытаюсь отобразить вывод в браузере
то есть,
os.system('mysql -H -uaaa -pbbb -hhostip -P3306 -e"%s"'%(query))
печатает только «hii»
журнал ошибок содержит
sh: / usr / local / mysql / bin / mysql: В доступе отказано
Вам нужно сделать sh файл и поместить команды для подключения внутри.
Например, test.sh
python csv_generate.py
В PHP
exec("sh test.php");
Так что не сбои выполните команду
chmod 777 csv_generate.py
Других решений пока нет …