PHPの公式ドキュメントは環境さえ用意すれば自分でビルドすることができます。
DocBookと呼ばれる仕組みが採用されており、HTML以外にも様々なフォーマットに出力できるため、例えばPDFやePubを生成し、KindleやiBooksなどの電子書籍リーダーで閲覧することも可能です。
phdのインストール
PHPのドキュメントを生成するコマンド「PhD」のインストールを最初に行います。PEARが利用できればそれほど難しくはありません。
$ pear channel-discover doc.php.net Channel "doc.php.net" is already initialized $ sudo pear install doc.php.net/phd_php Did not download optional dependencies: phpdocs/PhD_PEAR, phpdocs/PhD_IDE, use --alldeps to download automatically phpdocs/PhD_PHP can optionally use PHP extension "haru" phpdocs/PhD can optionally use package "phpdocs/PhD_PEAR" phpdocs/PhD can optionally use package "phpdocs/PhD_IDE" phpdocs/PhD can optionally use PHP extension "haru" phpdocs/PhD_Generic can optionally use PHP extension "haru" downloading PhD_PHP-1.1.10.tgz ... Starting to download PhD_PHP-1.1.10.tgz (26,240 bytes) .........done: 26,240 bytes downloading PhD-1.1.10.tgz ... Starting to download PhD-1.1.10.tgz (47,401 bytes) ...done: 47,401 bytes downloading PhD_Generic-1.1.10.tgz ... Starting to download PhD_Generic-1.1.10.tgz (29,362 bytes) ...done: 29,362 bytes install ok: channel://doc.php.net/PhD_Generic-1.1.10 install ok: channel://doc.php.net/PhD-1.1.10 install ok: channel://doc.php.net/PhD_PHP-1.1.10
$ phd --version PhD Version: 1.1.10 Generic: 1.1.10 PHP: 1.1.10 PHP Version: 5.5.9-1ubuntu4.14 Copyright(c) 2007-2016 The PHP Documentation Group
ドキュメントのソースを取得
$ svn co http://svn.php.net/repository/phpdoc/modules/doc-en phpdoc-en
上記だと英語のドキュメントになる。日本語のドキュメントがほしい場合は、''http://svn.php.net/repository/phpdoc/modules/doc-ja'' をcheckoutする。
ドキュメントのビルド
phd用の.manual.xmlを生成する。生成が完了したらctrl+c
で終了する。
$ cd phpdoc-en $ php doc-base/configure.php configure.php: $Id: configure.php 337463 2015-08-14 23:54:15Z cmb $ PHP version: 5.5.9-1ubuntu4.14 Checking for source directory... /home/ubuntu/phpdoc-en/doc-base Checking for output filename... /home/ubuntu/phpdoc-en/doc-base/.manual.xml Checking whether to include CHM... no Checking for PHP executable... /usr/bin/php5 Checking for language to build... en Checking whether the language is supported... yes Checking for partial build... no Checking whether to enable detailed XML error messages... no Checking libxml version... 2.9.1 Checking whether to enable detailed error reporting (may segfault)... yes Checking whether to optimize out the DTD (performance gain, but segfaults)... yes Generating /home/ubuntu/phpdoc-en/doc-base/manual.xml... done Generating /home/ubuntu/phpdoc-en/doc-base/install-unix.xml... done Generating /home/ubuntu/phpdoc-en/doc-base/install-win.xml... done Generating /home/ubuntu/phpdoc-en/doc-base/developer.template.xml... done Generating /home/ubuntu/phpdoc-en/doc-base/scripts/file-entities.php... done Iterating over extension specific version files... OK Saving it... OK Creating file /home/ubuntu/phpdoc-en/doc-base/entities/file-entities.ent... done Checking for if we should generate a simplified file... no Checking whether to save an invalid .manual.xml... no Loading and parsing manual.xml... done. Validating manual.xml... done. All good. Saving .manual.xml... done. All you have to do now is run 'phd -d /home/ubuntu/phpdoc-en/doc-base/.manual.xml' If the script hangs here, you can abort with ^C. _ _..._ __ \)` (` / / `\ | d b | =\ Y =/--..-="````"-. '.=__.-' `\ o/ /\ \ | | \ \ / ) \ .--""`\ < \ '-' / // | || \ '---' jgs ((,,_/ ((,,___/ (Run `nice php configure.php` next time!) ^C
.manual.xmlを使用し、phdでドキュメントを生成します。後は待つだけです。
$ phd -d doc-base/.manual.xml -P PHP
環境によってはかなりの時間がかかります。また警告などが表示され心が休まらないかもしれませんが、気長に待ちましょう。
もしお目当てのファイル形式がわかっているのであれば、''-f''で指定するのも手です。
$ phd --help -f <formatname> --format <formatname> The build format to use
生成されたファイルを確認
ドキュメントはすべてoutputディレクトリに生成されます。
$ cd output $ ls index.sqlite php-bigxhtml.html php-chunked-xhtml/ php-epub/ php-howto/ php-pdf/ php-web/ php-bigxhtml-data/ php-chm/ php-enhancedchm/ php-functions/ php-kdevelop php-tocfeed/
トラブルシューティング
PHP Fatal error: Class 'HaruDoc' not found
以下のエラーは、PDFを生成する際に使用するライブラリが存在しないために発生する。
PHP Fatal error: Class 'HaruDoc' not found in /usr/share/php/phpdotnet/phd/Format/Abstract/PDF.php on line 138
libHaruを公式サイトからダウンロードしインストール、その後PHPで利用するためにPECLで必要なライブラリを入れます。
$ wget -O libharu.tar.gz https://github.com/libharu/libharu/tarball/master $ tar zxvf libharu.tar.gz $ cd libharu-libharu-d84867e $ ./buildconf.sh (./configureが存在しない場合に実行。これで生成される) $ ./configure $ make clean $ make $ sudo make install $ sudo pecl install haru
以降は環境によって設定方法が異なりますが、コマンドラインでPHPの拡張機能を有効にする設定を行う。ここでは個別のファイルに書いていますが、php.iniへ直接書いてもOK。
$ sudo vi /etc/php5/mods-available/haru.ini extension=haru.so $ cd /etc/php5/cli/conf.d $ sudo ln -s ../../mods-available/haru.ini haru.ini
参考
関連書籍
ソシム
売り上げランキング: 220,472