Невозможно выполнить сценарий bash, содержащий команды докеров, из файла php

Я запускаю следующий скрипт php. Он создает файл сценария, который запускает пару команд докеров. Но этот файл скрипта по какой-то причине не запускает команды докеров. Он запускает обычные команды файла сценария, такие как ls, pwd, echoetc.

$code = $_POST['source']; 
$myfile = fopen("abc.py", "w");
fwrite($myfile, $code);
$myfile_new = fopen("execu_ta.sh", "w");
$txt = "#!/bin/bash\n\n";
fwrite($myfile_new, $txt);
$txt1 = "docker build -t python-new-world .";  
$txt2 = "docker run python-new-world\n";
fwrite($myfile_new, $txt1);
fwrite($myfile_new, $txt2);
$result=shell_exec('path of the "execu_ta.sh" file');
echo $result;

?>

Что здесь может быть не так?

вам нужно установить исполняемый бит или использовать shell_exec('/bin/bash your_script')

UjinT34 27.10.2018 09:26

@Ujin, может, ты мог бы добавить свой комментарий в качестве ответа, чтобы получить за него признание?

greyseal96 27.10.2018 10:00
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
85
2

Ответы 2

Вам необходимо установить исполняемый бит chmod("your script filename", 0755); или использовать shell_exec('/bin/bash your_script')

Тогда почему он запускает команды оболочки? Может быть, скрипт существует и имеет необходимые разрешения?

Gerard H. Pille 28.10.2018 18:04

В дополнение к ответу Уджина я бы тоже сбросил и закрывал файл, иначе вы можете выполнить пустой скрипт. Убедитесь, что докер находится на вашем пути.

Другие вопросы по теме