Я развернул простое приложение PHP на Heroku, содержащее только один (PHP) скрипт для моего исходного кода. Я решил написать функцию в отдельном PHP-скрипте. После этого я получал 403 Forbidden Error, и это сообщение отображалось на URL-адресе моего приложения: Forbidden You don't have permission to access / on this server. Из-за этого я создал текстовый документ под названием Procfile без какого-либо расширения и разместил в нем следующее: web: vendor/bin/heroku-php-apache2 web/.
Однако теперь я получаю следующую ошибку на heroku logs:
2018-04-10T09:09:09.853483+00:00 heroku[router]: at=error code=H10 desc = "App crashed" method=POST path = "/" host=************.herokuapp.com request_id=************ fwd = "************" dyno= connect= service= status=503 bytes= protocol=https
2018-04-10T09:09:56.037642+00:00 heroku[router]: at=error code=H10 desc = "App crashed" method=GET path = "/" host=************.herokuapp.com request_id=************ fwd = "************" dyno= connect= service= status=503 bytes= protocol=https
и по URL-адресу моего приложения отображается следующее сообщение:
Application error
An error occurred in the application and your page could not be served.
If you are the application owner, check your logs for details.
Мой (основной) PHP-скрипт на Heroku получает / размещает веб-перехватчик от Dialogflow и возвращает ему некоторую информацию, полученную из базы данных. Это выглядит так:
<?php
$dbServername = '******************';
$dbUsername = '******************';
$dbPassword = '******************';
$dbName = '******************';
$conn = mysqli_connect($dbServername, $dbUsername, $dbPassword, $dbName);
header('Content-Type: application/json');
$method = $_SERVER['REQUEST_METHOD'];
if ($method == 'POST') {
$requestBody = file_get_contents('php://input');
$json = json_decode($requestBody);
$action = $json->result->action;
$first_name = $json->result->contexts[0]->parameters->{'given-name'};
$last_name = $json->result->contexts[0]->parameters->{'last-name'};
$lifespan = $json->result->contexts[0]->lifespan;
$sql = "SELECT * FROM family WHERE name LIKE '%$first_name%$last_name%';";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);
if ($resultCheck > 0) {
while ($row = mysqli_fetch_assoc($result)) {
$person = $row;
}
switch ($action) {
case 'Name':
$speech = "$first_name is my" . $person["name"] . ".";
break;
case 'Location':
$speech = "$first_name is living in {$person["location"]}.";
break;
default:
$speech = "Please ask me something more relevant to my family";
break;
}
} else {
$speech = "Sorry, $first_name $last_name is not a member of my family.";
}
$response = new \stdClass();
$response->speech = $speech;
$response->displayText = $speech;
$response->source = "agent";
echo json_encode($response);
} else {
echo "Method not allowed";
}
?>
Почему я получаю эту ошибку и как ее исправить?
Я не знаю, актуально ли это, но я также получаю следующее предупреждение, когда ввожу git push heroku master на терминале:
remote: ! WARNING: Your Composer vendor dir is part of your Git repository.
remote: This directory should not be under version control; only your
remote: 'composer.json' and 'composer.lock' files should be added, which
remote: will let Composer handle installation of dependencies on deploy.
Хм, думаю, да, поскольку с тех пор я запускаю различные PHP-приложения на Heroku, но я не помню, что именно я делал.
Тот факт, что я не опубликовал здесь ответ, может означать, что в конечном итоге это не было настолько серьезным, чтобы обсуждать его дальше. Но если я когда-нибудь вспомню, могу выложить.






ты когда-нибудь решал это?