Программе XAMPP установки Apache на Windows с run.py файлы Python: реестр-строгий ScriptInterpreterSource

у меня есть установка новейшей версии XAMPP (w/PHP 7.2.2) и запуск apache просто отлично на моем ноутбуке Windows 10 для моего класса программирования PHP. Я смог заставить CGI работать .py файлы правильно в окне браузера, используя опцию + ExecCGI и добавление .py в строку AddHandler в файле / XAMPP/apache/conf / httpd.конф.

обычно первые две строки должны выглядеть так с CGI для того .py-файл для запуска правильно:

#!C:/Python/Python36_x86/python.exe
print("Content-Type: text/htmln")

однако, после прочтения apache2 не.4 документации по ScriptInterpreterSource: https://httpd.apache.org/docs/2.4/mod/core.html#scriptinterpretersource

я добавил правильный ключ реестра, упомянутый в документации, вместе со строкой:

ScriptInterpreterSource Registry-Strict

к моему /XAMPP/apache/conf / httpd.conf

и смог запустить мой скрипт на Python, без первых двух строк. Однако он по-прежнему требует дополнительной печати() оператор в первой строке (или print('n') ).

===========================================================================

МОЙ ВОПРОС:

есть ли вообще способ обойти необходимость в операторе print / newline в первой строке скрипта Python?

5
задан Maleko48
источник

1 ответов

есть ли вообще способ обойти необходимость в операторе print / newline в первой строке скрипта Python?

наверное, нет... по крайней мере, не для использования Python через CGI.

для данного CGI скрипта (не только в Python), язык-эквивалент этой "пустой строки" (CRLF) нужно в начале каких-либо данных в браузер. И пока Апачи хватает интерпретатора путь и значение Content-type заголовок реестра, похоже, эта строка не включена.

это все еще требует дополнительного print() оператор в первой строке (или print('\n') ).

для ясности, в случае, если есть какая-либо путаница, это просто должна быть первая строка текста, который вы выводите (если таковые имеются) из вашего сценария, например:

# Print our Python version

import sys

version = sys.version_info
full_version = str(version.major) + '.' + str(version.minor) + '.' + str(version.micro)

# 8000 more lines that don't include print()...

# === Our first line(s) of text output ===
# print ('Content-type: text/html')
print ('')

print ('Python Version: ', full_version)

Примечание (для всех остальных): если у вас нет все зарегистрировано, как OP, вам все еще нужно хэш-Банг, такие как !# python как вы первая строка и следует раскомментировать print ('Content-type: text/html').


0
отвечен Anaksunaman 2018-03-13 12:26:29
источник

Другие вопросы apache-http-server cgi php python windows