Linux | Windows | |
---|---|---|
master | ||
develop |
Pickles Framework(PxFW) は、静的で大きなウェブサイトを効率よく構築できる オープンソースのHTML生成ツールです。
データベース不要、PHPが動くサーバーに手軽に導入でき、プロトタイプ制作を中心に進めるような柔軟な制作スタイルを実現します。
Pickles 2 は、PxFW-1.x の後継です。 主な改善点は次の通りです。
composer
からインストールできるようになりました。- 機能の追加、拡張が手軽にできるようになりました。
- コマンドラインからの実行が改善され、外部のツールやスクリプトとの連携が容易になりました。
- その他、よりシンプルに利用できるよう、多くの機能が改善されました。
Pickles Framework 2.x はラッパーである Get start "Pickles 2" ! からの利用をおすすめします。
$ cd {$documentRoot}
$ composer create-project pickles2/preset-get-start-pickles2 ./
.px_execute.php
の置かれたディレクトリがドキュメントルートになるよう、ウェブサーバーを設定してください。
Pickles Framework が書き込みを行うディレクトリがあります。次のコマンドは、書き込み権限を付与するためのものです。すでに権限がある場合は実行する必要はありません。
$ chmod -R 777 ./px-files/_sys
$ chmod -R 777 ./caches
- Linux系サーバ または Windowsサーバ
- Apache
- mod_rewrite が利用可能であること
- .htaccess が利用可能であること
- PHP 7.3 以上
- mbstring PHP Extension
- JSON PHP Extension
- PDO PHP Extension
- PDO SQLite (PDO_SQLITE) PHP Extension
プラグインなど他のパッケージとの構成によって、いくつかの要件が追加される場合があります。 依存パッケージのシステム要件も確認してください。
$path_content
と$proc_type
が、before_content
プラグインの処理を受けて再計算されるようになった。$site->set_page_info()
で、ページタイトルの更新が反映されない場合がある不具合を修正した。$px
で、登録されていない外部からの動的なプロパティを参照しようとしたときに起きるエラーを修正した。PX=publish.run
で、path_region
を省略しても、paths_region
だけで対象範囲を絞れるようになった。- その他、細かい不具合などの修正。
$px
は、外部からの動的なプロパティ登録を受け付けるようになった。
- テーマクラス
picklesFramework2\theme\theme
がリンクされなくなっていた不具合を修正。 - PHP設定の初期化処理を更新した。
- 新しい設定項目
$conf->cookie_default_domain
,$conf->cookie_default_path
,$conf->cookie_default_expire
を追加した。 - 初期化時に
session.use_strict_mode = 1
をセットするようになった。 - その他、内部コードの細かい修正。
- 初期化時に
session.cookie_secure = 1
をセットするようになった。 - サイトマップCSVの読み込み時に、UTF-8 を明示するようになった。
$px->h()
を追加した。- その他、内部コードの細かい修正。
- セッション関連の設定が正しく反映されない不具合を修正。
- 初期化時に
session.cookie_httponly = 1
をセットするようになった。
- 内部コードの細かい修正。
- 一部機能のパフォーマンス改善。
- HTTPレスポンスステータスメッセージを網羅した。
$px->site()->get_sitemap_definition()
を追加。PX=api.get.sitemap_definition
を追加。$conf->custom_sitemap_definition
を追加。
- ダイナミックパスに関する不具合を修正した。
- PHP 8.1 に対応した。
- 同梱のプラグインが、より直接的な表現で設定できるようになった。
- 新しいコンフィグ項目
$conf->default_lang
、$conf->accept_langs
を追加。 $px->lang()
、$px->set_lang()
を追加。- 内部コードの細かい不具合の修正。
$px->get_version()
が示す値を、 v2.1系の番号に統一した。- その他、内部コードの細かい改善。
- プラグイン
autoindex
で、複数の同名の見出しを含むコンテンツで、アンカー名が重複する場合がある問題を修正。 - v2.1系で、SCSSライブラリを更新。(ただし、互換性維持のため、v2.0系では従来のまま)
- 内部コードの細かい改善。
- APIが返すパスの、Windowsパスに関する環境依存を修正。
- Pickles Framework v2.1.x で、サポート環境を PHP 8 を含む PHP 7.3 以上に変更。 PHP 5.4 〜 7.2 へのサポートは、引き続き Pickles Framework v2.0.x で継続します。
$px->internal_sub_request()
に、新しいオプションmethod
、body
、body_file
を追加。- コマンドラインオプション
--method
、--body
、--body-file
の処理に関する不具合の修正。 --body-file
オプションは、px-files/_sys/ram/data/
内を先に検索するようになった。
- 内部コードの細かい改善。
- 内部コードの細かい改善。
- 外部依存パッケージのバージョンを更新。
$px->mk_link()
にtarget
オプションを追加。
- 外部依存パッケージのバージョンを更新。
- パブリッシュ時に、開始時刻と終了時刻を
timelog.txt
に記録するようになった。
- PHP 7.4 に対応した。
$_SERVER['REMOTE_ADDR']
がない場合に、null
で初期化するようになった。- その他、軽微な内部コードの修正。
$site->get_path_param()
の引数を省略できない不具合を修正。- コマンドラインオプション
--method
、--body
、--body-file
を追加。
- パブリッシュが2重に起動することがある問題を修正。
- サイトマップキャッシュに関する内部処理の修正。
- パブリッシュのパラメータ
path_region
、paths_region
、paths_ignore
で、各行の先頭にスラッシュを補完するようになった。
$site->get_page_originated_csv()
を追加。PX=api.get.page_originated_csv
を追加。PX=api.get.page_info
が、パラメータpath
を省略した場合に、カレントページを探すようになった。encodingconverter
にext
オプションを追加。対象の拡張子を制限できるようになった。$site->get_pdo()
を追加。
- Windows + PHP7 の環境で、CSV ファイルを正しく読み込めない問題に対応した。
- サイトマップの
path
に、 Dataスキーマを扱えるようになった。 - 特殊なURL(
javascript:
、data:
など)をパブリッシュしようとしてエラーになる不具合を修正。 - その他の細かい不具合を修正。
- PHP 7.2 で SCSS のプレビューが失敗する問題を修正。
- 依存ライブラリ
michelf/php-markdown
,leafo/scssphp
のバージョンを更新。
- PHP 7.2 で、Warning が発生する問題を修正。
$px->canonical()
を追加。PX=api.get.canonical
を追加。$px->mk_link()
に、canonical
オプションを追加。$conf->path_files
に、コールバックを設定できるようになった。- サイトマップ項目のうち、
id
,path
,content
,logical_path
,list_flg
,layout
,orderby
,category_top_flg
,role
,proc_type
の前後の空白文字列を自動的に削除して扱うようになった。
- [bugfix] .px_execute.php の絶対パス中にスペースが含まれている場合にパブリッシュが正常に処理されない不具合を修正。
$site()->get_path_param()
で存在しないキーを要求した場合にエラーが起きる問題を修正した。$px->internal_sub_request()
が、サブリクエストが発行した標準エラー出力を$px->error()
に転送するようになった。- 新しい設定項目
$conf->scheme
と、対応するゲッターメソッド$px->get_scheme()
を追加。 - その他、軽微な不具合の修正。
$_SERVER['HTTP_USER_AGENT']
が存在しない場合、空白文字列で初期化するようになった。- パブリッシュ時に、一時パブリッシュディレクトリに存在せずパブリッシュ先ディレクトリに存在する除外設定されたディレクトリが削除されてしまうことがある不具合を修正。
$px->internal_sub_request()
を追加。$px->bowl()->get()
を追加。$px->bowl()->send()
を$px->bowl()->put()
に改名。(古いメソッド名の実装は残されているが非推奨)$px->bowl()->pull()
を$px->bowl->get_clean()
に改名。(古いメソッド名の実装は残されているが非推奨)PX=publish
のpaths_ignore
オプションで、ワイルドカード*
が使えるようになった。- プラグインの引数が空白の
()
で記述された場合に、空白文字列ではなくnull
として扱われるように修正。 - プラグインの引数内に改行コードを受け付けられない不具合を修正。
$px->href()
が、 hash を query として置き換えてしまうことがある不具合を修正。path
に hash や query を持つページを正常にパブリッシュできない不具合を修正。
- サイトマップ項目に
proc_type
を追加。$conf->paths_proc_type
と同様の効果だが、サイトマップ上で設定できるようになった。 - クラス
site
,bowl
,pxcmd
のAPIを外部から呼び出せるようにした。 - パブリッシュコマンドの最後に、検出したアラートログを表示するようにした。
- パブリッシュコマンドの最後に、パブリッシュ処理にかかった時間を表示するようにした。
$px->get_path_homedir()
を$px->get_realpath_homedir()
に改名。(古いメソッド名の実装は残されているが非推奨)$px->get_path_docroot()
を$px->get_realpath_docroot()
に改名。(古いメソッド名の実装は残されているが非推奨)- メソッド名の改名に合わせて、
PX=api.*
もそれぞれ改名。(古い名前のAPIの実装は残されているが非推奨) - パブリッシュのパフォーマンスを改善。
- デフォルトの Content-type を proc_type の値を参照して決定するように変更した。
$px->header()
,$px->header_list()
を追加。- JSONでの出力時(コマンドラインオプション
-o json
付加時)、header
に HTTPヘッダー情報が出力されるようになった。
- Windowsサーバーで、サイトマップキャッシュが排他ロックされて更新に失敗することがある問題を修正。
- パブリッシュプラグインを
before_sitemap
に設定しても動作するように変更。サイトマップ生成のパフォーマンスが改善する。 $site
が既にセットされている場合に、再生成せずそのまま利用するようになった。実質、before_sitemap
に設定したプラグインから$site
の挙動を変更することが可能になった。
- サイトマップキャッシュ生成中の2件目以降のリクエストに関するパフォーマンスを改善。待ち時間がなくなった。
- サイトマップキャッシュ生成開始から60分経過しても進捗した形跡がなければ、再生成するようになった。
- サイトマップキャッシュ生成中の2件目以降のリクエストで、古いキャッシュが利用できない場合、仮のトップページがセットされるようになった。
- サイトマップキャッシュ生成中の2件目以降のリクエストで、古いキャッシュが利用できる場合、それを利用するようになった。
- PXコマンド
PX=publish.version
,PX=clearcache.version
を追加。 - パブリッシュ時、エラーを含むページも、削除されずに出力されるようになった。
- サイトマップキャッシュ生成中の2件目以降のリクエストに関するパフォーマンスが改善した。
- 依存ライブラリ michelf/php-markdown, leafo/scssphp のバージョンを更新。
PX=api
がサイトマップを利用できない場合に、サイトマップ操作のAPIがfalse
を返すようになった。
- サイトマップに載っていないファイルを単体でパブリッシュできない不具合を修正。
- パブリッシュ範囲をファイル単体で指定した場合の、2重拡張子によるファイル名の揺れを吸収するようになった。
- proc_type が
pass
、ignore
の場合に、$conf->funcs->before_sitemap
,$conf->funcs->before_content
に設定されたPXコマンドが実行されるようになった。 - パブリッシュ範囲に具体的なファイル名を指定した場合のパフォーマンスが向上した。
- パブリッシュのオプション
keep_cache
を追加。キャッシュの消去と再生成のプロセスをスキップできるようになった。 - パブリッシュのオプション
paths_region
を追加。パブリッシュ対象範囲を複数指定できるようになった。 - コマンドラインからの起動時にも、
$_SERVER['DOCUMENT_ROOT']
を使用できるようになった。 - サイトマップに含まれる外部URLが
/index.html
で終わっている場合に、ページとして正しく処理できない不具合を修正。
- コンフィグ項目
$conf->paths_enable_sitemap
を追加。 $conf->paths_proc_type
に、新しい処理方法 pass を追加。デフォルトを pass に変更。$conf->paths_proc_type
が direct のときに、二重拡張子の処理を適用できるようになった。- 他プロセスがサイトマップキャッシュを生成中にアクセスした場合にサイトマップキャッシュ生成をスキップするアプリケーションロック機能を追加。
- Windows で Apache 上で実行する場合に、
$px->get_path_controot()
等のパスがずれてしまう不具合を修正。
$conf->paths_proc_type
の設定を、前方マッチから完全マッチに変更。 ディレクトリの指定等は、ワイルドカード*
を使って表現する方針で統一。PX=publish
に、パブリッシュ対象外のパスをコンフィグオプションで設定できる機能を追加。 (コマンドラインオプションで除外する方法は従来から存在していた)- 公開キャッシュ と
_sys/ram/*
のディレクトリが存在しない場合に、作成を試みるように変更。 path_publish_dir
とcontents_manifesto
を設定しない場合 Notice が起こらないように変更。- sitemaps ディレクトリが存在しない場合に Notice が起こらないように変更。
- サイトマップが最小構成の場合に、Noticeレベルのエラーが発生する不具合を修正。
- サイトマップ解析時に、Libre Office, Open Office 形式の一時ファイルを無視するように変更。
- その他の細かい不具合修正。
- サイトマップCSVの定義列がアスタリスク始まりではない(または空欄)の列がある場合、定義行が存在しないとみなしてしまう問題を修正。
- コンフィグ項目 $conf->copyright を追加。
- パブリッシュオプション paths_ignore に指定したパスが、パブリッシュディレクトリから削除されてしまう不具合を修正。
- 範囲指定したパブリッシュのディレクトリスキャンにかかるパフォーマンスを改善。
- ?PX=publish のオプション paths_ignore を追加。
- パブリッシュ実行中に、パブリッシュ先ディレクトリに都度コピーする機能が無効になる場合がある不具合を修正。
- その他、軽微な不具合の修正。
- Actor機能追加。
- pickles.php と px.php を分離。テストを書きやすくするための配慮により。
- パブリッシュ時、サイトマップ上でプロトコル名、またはドメイン名から始まるリンク先の場合はスキップするように変更。
- Markdownプロセッサーが、head と foot を処理しないように変更。
- .ignore を含むパスへのリクエストを、.htaccess で除外するように変更。
- サイトマップキャッシュに SQLite を導入。ページ数の多いサイトの処理が高速化。
- デフォルトで bowl "foot" の定義を新たに追加。
- サイトマップに、サイト外のURLを組み込めるようになった。
- $conf->path_files を追加。
- $conf->default_timezone を追加。
- $conf->path_phpini を追加。
- コマンドラインオプション --command-php, -c を追加。
- その他、不具合の修正など。
- パブリッシュに時間が掛かり過ぎるときに、タイムアウトが発生して途中終了することがある不具合を修正。
- パブリッシュログに ファイルサイズ と ファイル個々にの処理にかかった時間(microtime) を記載するようになった。
- その他、軽微な不具合の修正など。
$ cd {$documentRoot}
$ php vendor/phpunit/phpunit/phpunit;
$ wget https://phpdoc.org/phpDocumentor.phar;
$ composer run-script documentation;
Copyright (c)2001-2023 Tomoya Koyanagi, and Pickles Project
MIT License https://opensource.org/licenses/mit-license.php
- Tomoya Koyanagi tomk79@gmail.com
- website: https://www.pxt.jp/
- Twitter: @tomk79 https://twitter.com/tomk79/