Intereting Posts
Что представляет собой символ серьезного акцента (`) (а не одинарная кавычка) в PHP? Отправка электронной почты с PHP с помощью SMTP и электронной почты идет на спам. Какой будет самый простой способ отправить электронную почту во входящие? PHPUnit – классы автозагрузки в тестах перенаправление на страницу без изменения URL-адреса Панель загрузки при запуске скриптов MySQL Обновление некоторых полей базы данных без перезаписи полей не изменено Без обновления страницы, как отображать значения из базы данных с помощью ajax / jQuery Анализ синтаксиса X509 Как создать раскрывающийся список времени? Атрибут переменной атрибута: настройка каждого отображаемого текстового значения кнопок радио проблема сорта с десятичными числами Проверьте, установлен ли PHP на Apache или IIS Server? Как кодировать кириллицу в mysql? Perl-эквивалент preg_callback PHP Найдите разницу между двумя датами в PHP или MySQL

Метод POST возвращает 405 метод, который не разрешен на сервере производства Apache – проект Symfony3

Общая область описана здесь предыдущим вопросом

Мне удалось получить проект, работающий на месте, просто отлично, после этого я опубликовал проект на рабочем сервере своего работодателя и после некоторой конфигурации он был вживую. Тем не менее, я получаю «метод 405 не допускается», когда я использую методы POST, которые я делал локально.

  • Это проблема маршрутизации?
  • Это проблема конфигурации?
  • Это проблема разрешения?
  • Что-то другое ?

Конфигурация Информация большая, и я не уверен, что будет представлять угрозу безопасности, если я отправлю сюда, поэтому, пожалуйста, спросите меня, что вам нужно знать

Я опубликую то, что, как мне кажется, согласен:

Файл: /etc/apache2/mods-available/userdir.conf

<IfModule mod_userdir.c> UserDir public_html UserDir disabled root <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Indexes Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Limit GET POST OPTIONS> Require all granted </Limit> <LimitExcept GET POST OPTIONS> Require all denied </LimitExcept> </Directory> <Directory /var/www/html/pdf/web> AllowOverride FileInfo AuthConfig Limit Indexes Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Limit GET POST OPTIONS> Require all granted </Limit> <LimitExcept GET POST OPTIONS> Require all denied </LimitExcept> </Directory> 

Файл: /etc/apache2/sites-available/000-default.conf

 <VirtualHost ******:80> ServerName ****** DocumentRoot /var/www/html/pdf/web <Directory /var/www/html/pdf/web> AllowOverride All Order Allow,Deny Allow from All </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined RewriteEngine on RewriteCond %{SERVER_NAME} =******* RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] 

Файл: /etc/apache2/sites-enabled/000-default-le-ssl.conf

 <IfModule mod_ssl.c> <VirtualHost *****:443> ServerName ***** DocumentRoot /var/www/html/pdf/web ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLCertificateFile ******************** SSLCertificateKeyFile ***************** Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost> 

От phpinfo ():

  • System Linux uvn-243-1.tll07.zonevs.eu 4.4.0-042stab123.9 # 1 SMP Чт 29 июня 13:01:59 MSK 2017 x86_64
  • Сервер API Apache 2.0 Handler
  • Версия Apache Apache / 2.4.18 (Ubuntu)
  • Loaded модули ядра mod_so mod_watchdog http_core mod_log_config mod_logio mod_version mod_unixd mod_access_compat mod_alias mod_auth_basic mod_authn_core mod_authn_file mod_authz_core mod_authz_host mod_authz_user mod_autoindex mod_deflate mod_dir mod_env mod_filter mod_mime PreFork mod_negotiation mod_php7 mod_rewrite mod_setenvif mod_socache_shmcb mod_ssl mod_status

Как объяснено в Symfony Docs: корневая папка в папке now / web

Мои функции:

  /** * @Rest\Post("/mcPDF/") */ public function getDataAction(Request $request){ // Change the path to your jar file location $jarfile = "~/java/mcpdf.jar"; // Change the path to your prefered destination where the output file will be created $result = "~/pdf_output/output.pdf"; $form = $request->get('form'); $data = $request->get('data'); if(is_null($data) || $data == ""){ return new View('Data source not found', Response::HTTP_NO_CONTENT); }elseif(is_null($form) || $form == ""){ return new View('Form source not found', Response::HTTP_NO_CONTENT); } $command = "java -jar $jarfile $form fill_form - output - < $data > $result"; $result = exec($command, $output); // dump($result); exit; } /** * @Rest\Post("/mPDF/") */ public function createPDFAction(Request $request){ $source = $request->get('source'); if($source == ""){ return new View('No Data found', Response::HTTP_NO_CONTENT); } $mpdfService = $this->get('tfox.mpdfport'); $html = file_get_contents($source); $mpdf = $mpdfService->getMpdf(); $mpdf->WriteHTML($html); $mpdf->Output(); exit; } 

ОЧЕНЬ ВАЖНОЕ ОБНОВЛЕНИЕ Успешно звонили cURL внутри сервера, и это сработало! Считаете ли вы, что это проблема POSTMAN? Я использую POSTMAN для тестирования методов вызовов cURL:

 curl -d "source=pdf_input/tax-calculation.html" -X POST https://*****/app.php/mPDF/ curl -d "form=pdf_input/sample.pdf&data=pdf_input/sample.xfdf" -X POST https://*****/app.php/mcPDF/