Не удалось загрузить ресурс: сервер ответил статистикой 405 (метод не разрешен)
В настоящее время я получаю эту ошибку: :60018/server.php не удалось загрузить ресурс: сервер ответил со статусом 405 (метод не разрешен)
Я не очень хорошо знаком с php-кодом, так как это код, который мой друг написал некоторое время назад для проекта, над которым мы работали, и я хотел немного поработать над этим проектом самостоятельно и сделать его лучше. Но я не уверен, что делает это возможным, я пытался найти материал об этом, но, честно говоря, раньше не использовал php. Код приведен ниже, любая помощь и идеи будут оценены по достоинству. И если это имеет значение, я запускаю этот проект на Visual Studios 2015
$ids = buildFinalList(); echo json_encode($ids); function buildFinalList() { $conn = dbConnect(); $type = 'themoviedb'; $input = json_decode(file_get_contents('php://input'), true); $genre = $input['genres']; $sources = $input['sources']; $page = 1; $result = array(); while (count($result) <= 2) { $currentPage = generateList($genre, $page++); $idChecked = idCheck($conn, $currentPage, $type); $sourceChecked = sourceCheck($conn, $idChecked, $sources); $result = calcRating($sourceChecked, $result); } $conn->close(); $filmIDs = array(); foreach ($result as $key => $value) { array_push($filmIDs, $key); } return $filmIDs; } function generateList($genreID, $pageNum) { $usURL = "http://api.themoviedb.org/3/discover/movie?"; $apiKey = "api_key=9372ef92347b5703a397967af35f6c1c"; $genre = "&with_genres=" . $genreID; $page = "&page=" . $pageNum; $votes = "&vote_count.gte=50"; $endURL = "&sort_by=vote_average.desc"; $data1 = json_decode(file_get_contents($usURL.$apiKey.$genre.$page.$votes.$endURL), true); $data2 = $data1['results']; $ids = array(); foreach ($data2 as $result) { array_push($ids, $result['id']); } return $ids; } function dbConnect() { $conn = new mysqli("localhost", "root", "", "movies"); if ($conn->connect_error) { exit("Server connection error"); } return $conn; } function idCheck($conn, $ids, $type) { $results = array(); foreach ($ids as $id) { //database check $query = "SELECT * FROM `filmids` WHERE ".$type."=\"".$id."\""; $result = $conn->query($query); if ($result->num_rows == 0) { $guideCall = json_decode(file_get_contents ('http://api-public.guidebox.com/v1.43/US/rKs3n3vENgt7CQC6D2W8y8tQYtrVoaAx/search/movie/id/' .$type.'/'.$id), true); if (empty($guideCall) || empty($guideCall['imdb'])){ continue; } else { $in = "INSERT INTO `filmids` (`imdb`, `themoviedb`, `guide`) VALUES (\"" .$guideCall["imdb"]."\", \"".$guideCall["themoviedb"]."\", \"" .$guideCall["id"]."\")"; $conn->query($in); $out = "SELECT * FROM `filmids` WHERE ".$type."=\"".$id."\""; $result = $conn->query($out); array_push($results, $result->fetch_assoc()); } } else { array_push($results, $result->fetch_assoc()); } } return $results; } function sourceCheck($conn, $ids, $sources) { $validFilms = array(); foreach ($ids as $film) { $query = "SELECT * FROM `sources` WHERE id=".$film['id']; $result = $conn->query($query); if ($result->num_rows == 0) { $addRow = "INSERT INTO `sources`(`id`) VALUE (".$film['id'].")"; $conn->query($addRow); $guideCall = json_decode(file_get_contents ('http://api-public.guidebox.com/v1.43/US/rKs3n3vENgt7CQC6D2W8y8tQYtrVoaAx/movie/' . $film['guide']), true); $webSources = $guideCall['subscription_web_sources']; $trueSources = array(); foreach ($webSources as $webSource) { array_push($trueSources, $webSource['source']); } foreach ($trueSources as $trueSource) { $query = "UPDATE `sources` SET `".$trueSource."` = \"".$trueSource."\" WHERE `id`=".$film['id']; $check = $conn->query($query); if ($check) { continue; } else { $conn->query("ALTER TABLE `sources` ADD `".$trueSource."` VARCHAR(255)"); $conn->query($query); } } if (count(array_diff($sources, $trueSources)) < count($sources)) { array_push($validFilms, $film); } } else { if (count(array_diff($sources, $result->fetch_assoc())) < count($sources)) { array_push($validFilms, $film); } } } return $validFilms; } function calcRating($films, $sorted) { foreach ($films as $film) { $OMDb = json_decode(file_get_contents("http://www.theimdbapi.org/api/movie?movie_id=".$film['imdb']), true); $rating = ($OMDb['rating']); $film['rating'] = $rating; $sorted[$film['imdb']] = $rating; } arsort($sorted); return $sorted; }
Что я уже пробовал:
Я правильно установил и настроил php и IIS, убедился, что обработчики разрешили метод POST, как и следовало, добавил тип. php MIME как в диспетчере IIS, так и в файле applicationhost. config
Richard MacCutchan
Какая строка вызывает ошибку?
Member 13368942
Сначала он не дает мне строку для erorr, он просто говорит, что ошибка находится в serber.php файл. Однако после добавления типа MIME телефона, теперь, когда он дает мне 405 erorr, он говорит, что ошибка: "angular.js:11756 POST localhost:60018/server.php 405 (метод не разрешен)"
Richard MacCutchan
Таким образом, это говорит вам о том, что ваш сервер не может обработать запрос, который вы пытаетесь отправить. Вам нужно изучить детали запроса и понять, почему сервер отклоняет его.
Member 13368942
Я понятия не имею, как заглянуть в детали запроса, чтобы понять, почему сервер его отклонит
Richard MacCutchan
Ну, это то, что вам нужно узнать, если вы стремитесь стать разработчиком программного обеспечения.
Member 13368942
Я понимаю, что было бы неплохо знать, как это сделать, если мне когда-нибудь понадобится работать с сервером, но в настоящее время я не знаю, как это сделать, так что не забудьте помочь мне разобраться в этом
Richard MacCutchan
Извините, но на то, о чем вы спрашиваете, невозможно ответить. У вас есть доступ ко всей информации, необходимой для того, чтобы узнать, что происходит в ваших системах; у нас нет.
Member 13368942
Возможно, у меня есть доступ к этой информации, но я понятия не имею, как я получу доступ к этой информации. Я буквально только с помощью Visual студии экспресс служб IIS для того, чтобы запустить приложение. Ошибка возникает в конце, когда PHP должен быть запущен, и ничего не возвращается. Когда я проверяю консоль, я получаю ошибку 405, но я понятия не имею, куда идти, чтобы найти подробную информацию о том, почему сервер не может обработать этот запрос.
Richard MacCutchan
Ну, поскольку у нас нет доступа к вашей системе, мы больше ничем не можем вам помочь. Вы можете попробовать прочитать документацию IIS, чтобы узнать, есть ли в ней какие-либо полезные рекомендации.
Member 13368942
У меня есть обновление по этому вопросу, если это вообще поможет. Если я просто пойду к http://localhost в google chrome я получаю обычную страницу IIS, которая должна загружаться, если она установлена правильно. Затем, если я попытаюсь ввести http://localhost/phpinfo.php он не открывает страницу, а скорее загружает phpinfo.php вместо этого файл. Есть ли какая-то причина, по которой вы могли бы подумать об этом? Я просто сделал новую установку php, прежде чем попробовать это, и прошел через инструкции по установке.
Richard MacCutchan
Все зависит от того, что содержится в этом файле. Что в первых строках?
Member 13368942
Это просто тестовый файл php, который имеет <? phpinfo(); ?>
Richard MacCutchan
Ну, браузер ничего не может с этим поделать, так как это не HTML.
Member 13368942
ГМ, если php настроен правильно, то он должен дать вам красиво отформатированную информационную страницу о вашей установке php, то есть смысл добавить эту строку кода в файл, обычно именуемый phpinfo.php, в папку wwwroot, а затем пытается получить к ней доступ с помощью localhost
Richard MacCutchan
Где ты это вычитал?
Member 13368942
Это с веб-сайта Microsoft
Member 13368942
https://docs.microsoft.com/en-us/iis/application-frameworks/scenario-build-a-php-website-on-iis/configuring-step-1-install-iis-and-php
Richard MacCutchan
Я думаю, вам нужно задать вопрос Microsoft.
Member 13368942
Что это вообще значит? Извините, но вы сказали, что ничего не должны делать, так что вы, должно быть, ошибаетесь, поскольку я считаю, что Microsoft над вами, без обид. Похоже, от тебя не будет никакой помощи, поскольку ты сказал, что это ничего не даст, когда на самом деле будет.
Member 13368942
Чтобы проверить вашу установку PHP
Откройте текстовый редактор, например блокнот, от имени администратора.
В новом файле введите следующий текст: <? php phpinfo(); ?>
Сохраните файл как C:\inetpub\wwwroot\Phpinfo.php.
Откройте браузер и введите следующий URL-адрес: http://localhost/phpinfo.php
Отображается красиво отформатированная веб-страница с текущими настройками PHP.
Richard MacCutchan
И так ли это? И откуда у вас эта информация?
Member 13368942
Дело в том, что он не отображает хороший pdge, как он говорит, что это должно быть, он загружает файл. php, о котором я уже говорил вам
Richard MacCutchan
Видеть PHP: ваша первая страница с поддержкой PHP-руководство пользователя[^]
Member 13368942
И разве это не говорит то же самое, что делает страница microsoft, например, 2 на сайте, на который вы только что указали?
Member 13368942
Как обновление ситуации, у меня действительно есть страница phpinfo, работающая сейчас (и, как я и Microsoft сказали, весь файл. php говорит, что это <? php phpinfo ();? > И это дает мне хорошую отформатированную страницу с моими настройками php), но я все еще получаю ошибку 405 при попытке запустить php на моем visual studios IIS.
Richard MacCutchan
Я только что настроил IIS и установил PHP в соответствии с инструкциями Microsoft, и все, похоже, работает нормально. Проверяя установку я нашел следующий каталог: C:\inetpub\logs
, где вы, скорее всего, найдете больше информации о своей ошибке.
Member 13368942
Вы пробовали запустить php-страницу в visual studio? Вот где моя ошибка, а не с установкой телефона, как у меня сейчас работает
Richard MacCutchan
У меня нет установленных шаблонов веб-разработчиков, поэтому я не могу это проверить.
Member 13368942
вот где я получаю ошибку, хотя и в Visual Studio. Так что ничего хорошего, если все остальное работает с IIS и PHP, если оно не работает в Visual Studios, а это не так. Я сомневаюсь, что какие-либо журналы ошибок для ошибок visual studio 405 будут храниться в этом месте
Richard MacCutchan
Журналы ошибок будут находиться на сервере IIS; именно там генерируется ошибка.
Mohibur Rashid
Ваша функция file_get_contents выглядит подозрительно
Member 13368942
Что заставляет file_get_contents выглядеть подозрительно? Помните, что это не мой телефонный код, это друзья, которые были написаны некоторое время назад в групповом проекте, поэтому у меня ограниченные знания php.