PyHP
PyHP 3.1
PYHPは、PHPコードなどのPythonコードをHTMLおよびその他のテキストファイルに埋め込むことができるパッケージです。スクリプトは、Webサーバーの構成またはShebangの構成によって呼び出され、WSGIを介してWebサーバーと通信します。
<?pyhpおよび?>タグ内に含まれていますexitとsys.exit 、サーバー全体ではなく、スクリプトを終了しますatexit登録関数は、WSGIモードでサーバーシャットダウンまで呼び出されませんregister_shutdown_functionによって実行する必要がありますpyhp-cliコマンドを使用したCLIスクリプトpyhp-cgiコマンドを使用してCGIスクリプトpyhp.wsgi.appsサブモジュールを使用して、WSGIサーバーpyhp.wsgi.utilサブモジュールに含まれる工場で構築できますSERVERとしての$_SERVER$_REQUEST as REQUEST$_GET as GET$_POST AS POSTCOOKIEとしての$_COOKIE$_FILES FILESとしてhttp_response_codeheaderheaders_listheader_removeheaders_sentheader_register_callback追加のreplaceキーワード引数を使用して複数のコールバックを登録するsetcookie追加のsamesiteキーワード引数を備えていますsetrawcookie 、追加のsamesiteキーワード引数もありますregister_shutdown_function逆コールバック実行注文(LIFO)opcache_compile_fileコンピレーションが失敗したときにFalseを返す代わりに例外を提起するopcache_invalidateopcache_is_script_cachedopcache_reset-cまたは--config cliの議論によって与えられるパスPYHPCONFIG環境変数が指すパス~/.config/pyhp.toml/etc/pyhp.tomlRuntimeErrorを上げますpyhp.backends内に含まれていますpyhp-backendまたはpython3 -m pyhp.backends cliコマンドを介してやり取りすることができますこのセクションでは、コンピューターにPYHPをインストールする方法を示します。 CGIのWebサイトでPYHPスクリプトを使用する場合は、WebサーバーでさらにCGIを有効にする必要があります。
python3 setup.py bdist_wheelでpyhp-core pythonパッケージを構築しますPYHPCONFIG環境変数を設定するか、 pyhp.tomlを構成ファイルの場所のいずれかにコピーして、CLIコマンドを使用しますdebian/build_deb.shを実行します。sudo dpkg -i python3-pyhp-core_{version}-1_all.debでDebianパッケージをインストールできるようになりましたpython3-tomlおよびpython3-werkzeugがCLIコマンドを使用するかどうかを確認しますpyhp-backend clearアンインストールまたはアップグレード時に実行されます~PYHPCONFIG環境変数を設定するか、 pyhp.tomlを構成ファイルの場所のいずれかにコピーしますpyhp-*コマンドを使用できるようになりました import sys
import re
import tempfile
from wsgiref . simple_server import make_server
from pyhp . compiler import parsers , util , generic
from pyhp . backends . files import Directory
from pyhp . wsgi . apps import ConcurrentWSGIApp
from pyhp . wsgi . proxys import LocalStackProxy
from pyhp . wsgi . interfaces . php import PHPWSGIInterfaceFactory
from pyhp . wsgi . interfaces . phputils import UploadStreamFactory
compiler = util . Compiler (
parsers . RegexParser (
re . compile ( r"<?pyhps" ),
re . compile ( r"s?>" )
),
util . Dedenter (
generic . GenericCodeBuilder ( - 1 )
)
)
interface_factory = PHPWSGIInterfaceFactory (
200 ,
[( "Content-type" , "text/html; charset= " UTF-8 " " )],
None ,
( "GET" , "POST" , "COOKIE" ),
8000000 ,
UploadStreamFactory (
tempfile . gettempdir (),
20
)
)
sys . stdout = proxy = LocalStackProxy ( sys . stdout )
with Directory ( "." , compiler ) as backend :
with ConcurrentWSGIApp ( "tests/embedding/syntax.pyhp" , backend , proxy , interface_factory ) as app :
with make_server ( "" , 8000 , app ) as httpd :
httpd . serve_forever () from wsgiref . simple_server import make_server
import toml
from pyhp . wsgi . util import ConcurrentWSGIAppFactory
config = toml . load ( "pyhp.toml" )
with ConcurrentWSGIAppFactory . from_config ( config ) as factory :
with factory . app ( "tests/embedding/syntax.pyhp" ) as app :
with make_server ( "" , 8000 , app ) as httpd :
httpd . serve_forever ()