Docker CodeIgniter 2.2.6 загрузка файла не работает - PullRequest
3 голосов
/ 24 марта 2019

Я пытаюсь запустить приложение CodeIgniter 2.2.6 с установкой стека LAMP с помощью Docker в Windows 10. Приложение запущено и даже подключение к базе данных (с mariadb) работает нормально.Но когда я начал создавать функцию загрузки файлов, это не удалось.Браузер говорит: «172.18.0.3 слишком долго отвечал».

Вот мой файл docker-compose.yml: -

version: '3'

services: 

  php-apache:
    build:
      context: ./docker/php-apache
    ports: 
      - 8081:80
    volumes: 
      - ./app:/var/www/html
    links: 
      - 'mariadb'

  mariadb: 
    build: 
      context: ./docker/mariadb
    ports:
      - 3306:3306
    volumes: 
      - mariadb:/var/lib/mysql
    environment: 
      MYSQL_ALLOW_EMPTY_PASSWORD: "no"
      MYSQL_ROOT_PASSWORD: "rootpwd"
      MYSQL_USER: 'testuser'
      MYSQL_PASSWORD: 'testpassword'
      MYSQL_DATABASE: 'testdb_codeigniter'

volumes: 
  mariadb:

Вот файл Dockerfile для службы php-apache: -

FROM php:5.6-apache
RUN docker-php-ext-install pdo pdo_mysql mysqli

# Override with custom opcache settings
COPY ./opcache.ini $PHP_INI_DIR/conf.d/

Вот файл Dockerfileдля службы mariadb: -

FROM mariadb:latest

А вот моя структура папок: -

Here is my folder structure:-

У меня есть приложение, папки док-станции иФайл docker-compose.yml в моем корне.Внутри папки приложения у меня есть файлы codeigniter.

У меня есть php-файл для загрузки файлов (upload_form.php): -

<html>
    <head>
        <title>FIle Upload</title>
    </head>
    <body>
    <?= $error ?>
    <?= form_open_multipart('upload/upload_file') ?>
        <input type="file" name="userfile" size="20"><br/><br/>
        <input type="submit" value="Upload">
    </form>

    </body>
</html>

Когда я проверяю эту страницу в Google Chrome, кодбудем интерпретировать следующим образом.(Пожалуйста, обратите внимание на часть действия формы.): - enter image description here

После того, как я выберу файл изображения для загрузки и нажму кнопку загрузки, страница вращается в течение нескольких секунд и заканчиваетсяследующее сообщение: - enter image description here

Я не знаю, что я сделал неправильно, и любая помощь очень ценится.Спасибо.

1 Ответ

3 голосов
/ 25 марта 2019

Базовый URL должен быть абсолютным, включая протокол:

$config['base_url'] = "http://somesite.com/";

Если используется вспомогательный URL, то base_url () выведет указанную выше строку.

Если вы не включитебазовый URL обычно занимает IP-адрес докера:)

...