#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)
}
}
}
}
}