Я использую PHP для выполнения команды Ansible на Centos 7
Вот простой код внутри файла test.php
<?php
$command = "./run_ansible.sh";
$output = shell_exec($command);
echo "<pre>$output</pre>";
?>
и сценарий оболочки
ANSIBLE_DIR="/etc/ansible"ANSIBLE_INVENTORY_FILE="${ANSIBLE_DIR}/inventories/production"COMMAND="ansible all -i ${ANSIBLE_INVENTORY_FILE} -l 北京,广州 -m ping"sudo ${COMMAND}
Когда я запускаю php файл на сервере, он работал
php test.php
广州 | SUCCESS => {
"changed": false,
"ping": "pong"}
北京 | SUCCESS => {
"changed": false,
"ping": "pong"}
Когда я запускаю php файл в веб-браузере через URL (Http: //url/test.php), это не удалось
?? | SUCCESS => {
"changed": false,
"ping": "pong"}
?? | SUCCESS => {
"changed": false,
"ping": "pong"}
Имя хоста изменено на ??
Есть идеи по этому делу?
Попробуйте с exec:
exec("./run_ansible.sh");
И дать полный путь, как:
exec("./var/www/html/run_ansible.sh");
И установите кодировку вашего файла в utf-8
Когда я использую команду «cat, echo» в оболочке, PHP может отображать эти имена хостов. Но если я использую команду «ansible», вывод в браузере будет неудачным (он отображает ??)
У кого-нибудь есть идеи по этому делу?