Маршрут к файлу php в Ktor

#php #html #kotlin #routes #ktor

Вопрос:

Я ранее создал веб-сайт в xampp и хочу перенести файлы в проект ktor. Я рассмотрел ряд примеров маршрутизации ktor на html — страницы и видел эту работу. Есть ли способ проложить маршрут к php-файлу, чтобы он также отображался так, как это было бы через xampp. У меня есть приведенный ниже код в моем проекте ktor. Когда я перехожу к localhost:8080/website/form/index.php я перенаправлен на локальный хост:8080/веб-сайт/форма/индекс.phtml. Веб-страница не отображается, но файл index.php затем загружается с ошибкой. Неужели я думаю об этом неправильно?

 route("/website"){     
  static("form"){
            resources("static")
            file("index.php")
    }
}
 

Эта страница локального хоста не может быть найдена Ни одна веб-страница не была найдена для веб-адреса: http://localhost:8080/itinerary/form/index.phml

ОШИБКА HTTP 404

Комментарии:

1. перенаправление запроса в php-файл будет статически обслуживать его, поскольку ktor не способен запускать php-код.

Ответ №1:

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

Чтобы решить вашу проблему, вы можете выполнить процесс с интерпретатором PHP для каждого запроса и ответить содержимым результата. Пожалуйста, обратите внимание, что это решение неэффективно и ненадежно. Вот пример:

 routing {
    route("/website") {
        route("/form") {
            get("index.php") {
                withContext(Dispatchers.IO) {
                    val process = ProcessBuilder().command("/usr/bin/env", "php", "-f", "index.php").start()
                    process.waitFor()
                    call.respondBytes(process.inputStream.readAllBytes(), contentType = ContentType.Text.Html)
                }
            }
        }
    }
}