Общая область описана здесь предыдущим вопросом
Мне удалось получить проект, работающий на месте, просто отлично, после этого я опубликовал проект на рабочем сервере своего работодателя и после некоторой конфигурации он был вживую. Тем не менее, я получаю «метод 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 ():
Как объяснено в 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/