Выполнить Perl-скрипт в Yii2 Framework по http на localhost (Docker) - PullRequest
0 голосов
/ 27 мая 2019

Я могу запустить свой проект Yii2 с помощью Docker на локальном хосте. Теперь мне нужно выполнить скрипт perl по запросу http. Скрипт Perl находится в корневой папке. Вот кусок кода, как я пытаюсь выполнить Perl-скрипт.

public function actionExecPerl()
{
    $path = './script.pl';
    $exec = exec("/usr/bin/perl $path", $output);

    if(is_executable($path)) {
        return 'ok';
    }
    else {
        return 'Unable to call Perl Script';
    }
}

Затем я пытаюсь выполнить этот скрипт по http, с локального адреса:

http://127.0.0.1:22080/sync/exec-perl

В результате я всегда получаю: Невозможно вызвать Perl Script

Я перепробовал все возможные пути (полный путь), но не получил результата.

На всякий случай, я делюсь своим файлом конфигурации Docker

DockerFile

FROM yiisoftware/yii2-php:7.2-apache

# Change document root for Apache
RUN sed -i -e 's|/app/web|/app/api/web|g' /etc/apache2/sites-available/000-default.conf

docker-compose.yml

version: '3.2'

services:

  backend:
    build: backend
    ports:
      - 21080:80
    volumes:
      # Re-use local composer cache via host-volume
      - ~/.composer-docker/cache:/root/.composer/cache:delegated
      - ./docker/php/php.ini:/usr/local/etc/php/conf.d/custom.ini
      # Mount source-code for development
      - ./:/app

  api:
    build: api
    ports:
      - 22080:80
    volumes:
      # Re-use local composer cache via host-volume
      - ~/.composer-docker/cache:/root/.composer/cache:delegated
      - ./docker/php/php.ini:/usr/local/etc/php/conf.d/custom.ini
      # Mount source-code for development
      - ./:/app

  mysql:
    image: mysql:latest
    restart: always
    container_name: mysql-sensei
    ports:
      - 3306:3306
    command:
      --default-authentication-plugin=mysql_native_password
      --innodb_flush_method=O_DIRECT
    volumes:
      - ./docker/mysql/dump:/docker-entrypoint-initdb.d
      - ./docker/mysql/my.cnf:/etc/mysql/my.cnf
    environment:
      - MYSQL_ROOT_PASSWORD=secret
      - MYSQL_DATABASE=secret
      - MYSQL_USER=secret
      - MYSQL_PASSWORD=secret
...