source: general/prog/php.xml@ 10023bb

10.0 10.1 11.0 8.3 8.4 9.0 9.1 basic bdubbs/svn elogind ken/refactor-virt lazarus perl-modules qt5new trunk xry111/git-date xry111/git-date-for-trunk xry111/git-date-test
Last change on this file since 10023bb was 10023bb, checked in by Pierre Labastie <pieere@…>, 4 years ago

Updates:
gnupg-2.2.5
php-7.2.3
dovecot-2.3.0.1

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@19930 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 23.3 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7 <!ENTITY php-download-http "http://www.php.net/distributions/php-&php-version;.tar.xz">
8 <!ENTITY php-download-ftp " ">
9 <!ENTITY php-md5sum "9e462dd313e0fb79405cd4a56974565e">
10 <!ENTITY php-size "12 MB">
11 <!ENTITY php-buildsize "494 MB (with tests, add 114 MB for documentation)">
12 <!ENTITY php-time "1.9 SBU (with parallelism=4; add 3.3 SBU for tests)">
13]>
14
15<sect1 id="php" xreflabel="PHP-&php-version;">
16 <?dbhtml filename="php.html"?>
17
18 <sect1info>
19 <othername>$LastChangedBy$</othername>
20 <date>$Date$</date>
21 </sect1info>
22
23 <title>PHP-&php-version;</title>
24
25 <indexterm zone="php">
26 <primary sortas="a-PHP">PHP</primary>
27 </indexterm>
28
29 <sect2 role="package">
30 <title>Introduction to PHP</title>
31
32 <para>
33 <application>PHP</application> is the PHP Hypertext Preprocessor.
34 Primarily used in dynamic web sites, it allows for programming code to be
35 directly embedded into the HTML markup. It is also useful as a
36 general purpose scripting language.
37 </para>
38
39 &lfs82_checked;
40
41 <bridgehead renderas="sect3">Package Information</bridgehead>
42 <itemizedlist spacing="compact">
43 <listitem>
44 <para>
45 Download (HTTP): <ulink url="&php-download-http;"/>
46 </para>
47 </listitem>
48 <listitem>
49 <para>
50 Download (FTP): <ulink url="&php-download-ftp;"/>
51 </para>
52 </listitem>
53 <listitem>
54 <para>
55 Download MD5 sum: &php-md5sum;
56 </para>
57 </listitem>
58 <listitem>
59 <para>
60 Download size: &php-size;
61 </para>
62 </listitem>
63 <listitem>
64 <para>
65 Estimated disk space required: &php-buildsize;
66 </para>
67 </listitem>
68 <listitem>
69 <para>
70 Estimated build time: &php-time;
71 </para>
72 </listitem>
73 </itemizedlist>
74
75 <bridgehead renderas="sect3">Additional Downloads</bridgehead>
76 <itemizedlist spacing="compact">
77 <listitem>
78 <para>
79 Pre-built documentation (optional): <ulink
80 url="http://www.php.net/download-docs.php"/>
81 </para>
82 </listitem>
83 </itemizedlist>
84
85 <bridgehead renderas="sect3">PHP Dependencies</bridgehead>
86
87 <bridgehead renderas="sect4">Recommended</bridgehead>
88 <para role="recommended">
89 <xref linkend="apache"/> and
90 <xref linkend="libxml2"/>
91 </para>
92
93 <bridgehead renderas="sect4">Optional System Utilities and Libraries</bridgehead>
94 <para role="optional">
95 <xref linkend="aspell"/>,
96 <xref linkend="enchant"/>,
97 <xref linkend="libxslt"/>,
98 an <xref linkend="server-mail"/> (that provides a
99 <command>sendmail</command> command),
100 <xref linkend="pcre"/>,
101 <xref linkend="pth"/>,
102 <ulink url="http://dmalloc.com/">Dmalloc</ulink>,
103 <ulink url="http://www.net-snmp.org/">Net-SNMP</ulink>,
104 <ulink url="http://www.ossp.org/pkg/lib/mm/">OSSP mm</ulink>,
105 <ulink url="http://re2c.org/">re2c</ulink>, and
106 <ulink url="http://xmlrpc-epi.sourceforge.net/main.php?t=php_about">XMLRPC-EPI</ulink>
107 </para>
108
109 <bridgehead renderas="sect4">Optional Graphics Utilities and Libraries</bridgehead>
110 <para role="optional">
111 <xref linkend="freetype2"/>,
112 <xref linkend="libexif"/>,
113 <xref linkend="libjpeg"/>,
114 <xref linkend="libpng"/>,
115 <xref linkend="libtiff"/>,
116 <xref linkend="x-window-system"/>,
117 <!--<ulink url="http://www.fastio.com/">ClibPDF</ulink>, - site asks for username/password-->
118 <ulink url="http://www.adobe.com/devnet/acrobat/fdftoolkit.html">FDF Toolkit</ulink>,
119 <ulink url="https://bitbucket.org/libgd/gd-libgd/downloads">GD</ulink>, and
120 <ulink url="http://fossies.org/linux/misc/old/t1lib-5.1.2.tar.gz/">t1lib</ulink>
121 </para>
122
123 <bridgehead renderas="sect4">Optional Web Utilities</bridgehead>
124 <para role="optional">
125 <xref linkend="curl"/>,
126 <xref linkend="tidy-html5"/>,
127 <ulink url="http://sourceforge.net/projects/caudium/">Caudium</ulink>,
128 <ulink url="https://www.hyperwave.com/en/">Hyperwave</ulink>,
129 <ulink url="http://www.mnogosearch.org/">mnoGoSearch</ulink>,
130 <ulink url="http://www.roxen.com/products/webserver/">Roxen WebServer</ulink>, and
131 <ulink url="https://wddxnet.codeplex.com/">WDDX</ulink>
132 </para>
133
134 <bridgehead renderas="sect4">Optional Data Management Utilities and Libraries</bridgehead>
135 <para role="optional">
136 <xref linkend="db"/> (Note that PHP does not officially support versions
137 above 5.3),
138 <xref linkend="mariadb"/> or <ulink url="http://www.mysql.com/">MySQL</ulink>,
139 <xref linkend="openldap"/>,
140 <xref linkend="postgresql"/>,
141 <xref linkend="sqlite"/>,
142 <xref linkend="unixodbc"/>,
143 <ulink url="http://www.softwareag.com/">Adabas</ulink>,
144 <ulink url="http://www.birdstep.com/">Birdstep</ulink>,
145 <ulink url="http://cr.yp.to/cdb.html">cdb</ulink>,
146 <ulink url="http://www.dbmaker.com/">DBMaker</ulink>,
147 <ulink url="http://www.empress.com/">Empress</ulink>,
148 <ulink url="http://www.frontbase.com/cgi-bin/WebObjects/FBWebSite">FrontBase</ulink>,
149 <ulink url="http://www.hughes.com.au/products/msql/">Mini SQL</ulink>,
150 <ulink url="http://www.monetra.com/">Monetra</ulink>, and
151 <ulink url="http://sourceforge.net/projects/qdbm">QDBM</ulink>
152 </para>
153
154 <para>
155 <application>PHP</application> also provides support for many
156 commercial database tools such as <application>Oracle</application>,
157 <application>SAP</application> and
158 <application>ODBC Router</application>.
159 </para>
160
161 <bridgehead renderas="sect4">Optional Security/Encryption Utilities and Libraries</bridgehead>
162 <para role="optional">
163 <xref linkend="cyrus-sasl"/>,
164 <xref linkend="mitkrb"/>,
165 <ulink url="http://mcrypt.sourceforge.net/">libmcrypt</ulink>, and
166 <ulink url="http://mhash.sourceforge.net/">mhash</ulink>
167 </para>
168
169 <para condition="html" role="usernotes">
170 User Notes: <ulink url="&blfs-wiki;/php"/>
171 </para>
172
173 </sect2>
174
175 <sect2 role="installation">
176 <title>Installation of PHP</title>
177
178 <para>
179 You can use <application>PHP</application> for server-side
180 scripting, command-line scripting or client-side GUI applications. This
181 book provides instructions for setting up <application>PHP</application>
182 for server-side scripting as it is the most common form.
183 </para>
184
185 <note>
186 <para>
187 <application>PHP</application> has many more
188 <command>configure</command> options that will enable support for
189 various things. You can use <command>./configure --help</command> to
190 see a full list of the available options. Also, use of the
191 <ulink url="http://www.php.net/">PHP web site</ulink>
192 is highly recommended, as their online docs are very good. An example
193 of a <command>configure</command> command that utilizes many of the
194 most common dependencies can be found at <ulink
195 url="&sources-anduin-http;/files/php_configure.txt"/>.
196 </para>
197
198 <para>
199 If, for whatever reason, you don't have <xref linkend="libxml2"/>
200 installed, you need to add <option>--disable-libxml</option> to the
201 <command>configure</command> command in the instructions below. Note
202 that this will prevent the <command>pear</command> command from being
203 built.
204 </para>
205 </note>
206<!--
207 <para>
208 If you wish to build <application>PHP</application> with the
209 <application>tidy-html5</application> library, due to API changes, in the
210 <application>PHP</application> source, <filename>buffio.h</filename>
211 header needs to be changed to <filename>tidybuffio.h</filename> in the
212 file <filename>ext/tidy/tidy.c</filename>:
213 </para>
214
215<screen><userinput>sed -i 's/buffio.h/tidy&amp;/' ext/tidy/tidy.c</userinput></screen>
216-->
217 <para>
218 Install <application>PHP</application> by running the following commands:
219 </para>
220
221<screen revision="sysv"><userinput>./configure --prefix=/usr \
222 --sysconfdir=/etc \
223 --localstatedir=/var \
224 --datadir=/usr/share/php \
225 --mandir=/usr/share/man \
226 --enable-fpm \
227 --with-fpm-user=apache \
228 --with-fpm-group=apache \
229 --with-config-file-path=/etc \
230 --with-zlib \
231 --enable-bcmath \
232 --with-bz2 \
233 --enable-calendar \
234 --enable-dba=shared \
235 --with-gdbm \
236 --with-gmp \
237 --enable-ftp \
238 --with-gettext \
239 --enable-mbstring \
240 --with-readline &amp;&amp;
241make</userinput></screen>
242
243<screen revision="systemd"><userinput>./configure --prefix=/usr \
244 --sysconfdir=/etc \
245 --localstatedir=/var \
246 --datadir=/usr/share/php \
247 --mandir=/usr/share/man \
248 --enable-fpm \
249 --with-fpm-user=apache \
250 --with-fpm-group=apache \
251 --with-fpm-systemd \
252 --with-config-file-path=/etc \
253 --with-zlib \
254 --enable-bcmath \
255 --with-bz2 \
256 --enable-calendar \
257 --enable-dba=shared \
258 --with-gdbm \
259 --with-gmp \
260 --enable-ftp \
261 --with-gettext \
262 --enable-mbstring \
263 --with-readline &amp;&amp;
264make</userinput></screen>
265 <para>
266 To test the results, issue: <command>make test</command>. A few
267 tests may fail, in which case you are asked whether you want to send
268 the report to the PHP developers. If you want to automate the test,
269 you may prefix the command with <command>yes "n" | </command>.
270 </para>
271
272 <para>
273 Now, as the <systemitem class="username">root</systemitem> user:
274 </para>
275
276<!-- dev note: make INSTALL_ROOT=<DESTDIR> install -->
277
278<screen role="root"><userinput>make install &amp;&amp;
279install -v -m644 php.ini-production /etc/php.ini &amp;&amp;
280
281install -v -m755 -d /usr/share/doc/php-&php-version; &amp;&amp;
282install -v -m644 CODING_STANDARDS EXTENSIONS INSTALL NEWS README* UPGRADING* php.gif \
283 /usr/share/doc/php-&php-version; &amp;&amp;
284ln -v -sfn /usr/lib/php/doc/Archive_Tar/docs/Archive_Tar.txt \
285 /usr/share/doc/php-&php-version; &amp;&amp;
286ln -v -sfn /usr/lib/php/doc/Structures_Graph/docs \
287 /usr/share/doc/php-&php-version;</userinput></screen>
288
289 <para>
290 The default configuration files for the fastCGI process manager are
291 installed only if they do not already exist on the system. If this is
292 the first installation, they should be renamed, as the
293 <systemitem class='username'>root</systemitem> user:
294 </para>
295
296<screen role="root"><userinput>if [ -f /etc/php-fpm.conf.default ]; then
297 mv -v /etc/php-fpm.conf{.default,} &amp;&amp;
298 mv -v /etc/php-fpm.d/www.conf{.default,}
299fi</userinput></screen>
300
301 <para>
302 The pre-built HTML documentation is packaged in two forms: a tarball
303 containing many individual files, useful for quick loading into your
304 browser, and one large individual file, which is useful for using the
305 search utility of your browser. If you downloaded either, or both, of the
306 documentation files, issue the following commands as the
307 <systemitem class='username'>root</systemitem> user to install them (note
308 these instructions assume English docs, modify the tarball names below if
309 necessary).
310 </para>
311
312 <para>
313 For the <quote>Single HTML</quote> file:
314 </para>
315
316<screen role="root"><userinput>install -v -m644 ../php_manual_en.html.gz \
317 /usr/share/doc/php-&php-version; &amp;&amp;
318gunzip -v /usr/share/doc/php-&php-version;/php_manual_en.html.gz</userinput></screen>
319
320 <para>
321 For the <quote>Many HTML files</quote> tarball:
322 </para>
323
324<screen role="root"><userinput>tar -xvf ../php_manual_en.tar.gz \
325 -C /usr/share/doc/php-&php-version; --no-same-owner</userinput></screen>
326
327 </sect2>
328
329 <sect2 role="commands">
330 <title>Command Explanations</title>
331
332 <para revision="systemd">
333 <command>sed -i "s|lsystemd-daemon|lsystemd|g" configure</command>:
334 This command fixes the detection of the systemd library.
335 </para>
336
337 <para>
338 <parameter>--datadir=/usr/share/php</parameter>: This works
339 around a bug in the build machinery, which installs some data to a
340 wrong location.
341 </para>
342
343 <para>
344 <parameter>--enable-fpm</parameter>: This parameter allows
345 building the fastCGI Process Manager.
346 </para>
347
348 <para revision="systemd">
349 <parameter>--with-fpm-systemd</parameter>: This parameter allows
350 the FastCGI Process Manager to integrate with systemd.
351 </para>
352
353 <para>
354 <parameter>--with-config-file-path=/etc</parameter>: This parameter
355 makes <application>PHP</application> look for the
356 <filename>php.ini</filename> configuration file in
357 <filename class='directory'>/etc</filename>.
358 </para>
359
360 <para>
361 <parameter>--with-zlib</parameter>: This parameter adds
362 support for <application>Zlib</application> compression.
363 </para>
364
365 <para>
366 <parameter>--enable-bcmath</parameter>: Enables
367 <command>bc</command> style precision math functions.
368 </para>
369
370 <para>
371 <parameter>--with-bz2</parameter>: Adds support for
372 <application>Bzip2</application> compression functions.
373 </para>
374
375 <para>
376 <parameter>--enable-calendar</parameter>: This parameter
377 provides support for calendar conversion.
378 </para>
379
380 <para>
381 <parameter>--enable-dba=shared</parameter>: This parameter enables
382 support for database (dbm-style) abstraction layer functions.
383 </para>
384
385 <para>
386 <parameter>--enable-ftp</parameter>: This parameter
387 enables FTP functions.
388 </para>
389
390 <para>
391 <parameter>--with-gettext</parameter>: Enables functions
392 that use <application>Gettext</application> text translation.
393 </para>
394
395 <para>
396 <parameter>--enable-mbstring</parameter>: This parameter
397 enables multibyte string support.
398 </para>
399
400 <para>
401 <parameter>--with-readline</parameter>: This parameter
402 enables command line <application>Readline</application> support.
403 </para>
404
405 <para>
406 <option>--disable-libxml</option>: This option
407 allows building PHP without <application>libxml2</application>
408 installed.
409 </para>
410
411 <para>
412 <option>--with-apxs2</option>: Instead of building the fastCGI process
413 manager, it is possible to build an <application>apache</application>
414 module. This has some performance penalty for heavy loaded servers,
415 but may be easier to set up. This switch is incompatible with the
416 <parameter>--enable-fpm</parameter> and
417 <parameter>--with-fpm-...</parameter> switches.
418 </para>
419
420 <para>
421 <option>--with-mysqli=shared</option>: This option includes MySQLi
422 support.
423 </para>
424
425 <para>
426 <option>--with-mysql-sock=/run/mysqld/mysqld.sock</option>: Location of
427 the MySQL unix socket pointer.
428 </para>
429
430 <para>
431 <option>--with-pdo-mysql=shared</option>: This option includes PDO:
432 MySQL support.
433 </para>
434
435 <para>
436 <option>--with-tidy=shared</option>: This option includes tidy library
437 support.
438 </para>
439
440 </sect2>
441
442 <sect2 role="configuration">
443 <title>Configuring PHP</title>
444
445 <sect3 id="php-config">
446 <title>Config Files</title>
447
448 <para>
449 <filename>/etc/php.ini</filename>,
450 <filename>/etc/pear.conf</filename>,
451 <filename>/etc/php-fpm.conf</filename>, and
452 <filename>/etc/php-fpm.d/www.conf</filename>
453 </para>
454
455 <indexterm zone="php php-config">
456 <primary sortas="e-etc-php.ini">/etc/php.ini</primary>
457 </indexterm>
458
459 <indexterm zone="php php-config">
460 <primary sortas="e-etc-pear.conf">/etc/pear.conf</primary>
461 </indexterm>
462
463 <indexterm zone="php php-config">
464 <primary sortas="e-etc-php-fpm.d-www.conf">
465 /etc/php-fpm.d/www.conf</primary>
466 </indexterm>
467
468 <indexterm zone="php php-config">
469 <primary sortas="e-etc-php-fpm.conf">/etc/php-fpm.conf</primary>
470 </indexterm>
471
472 </sect3>
473
474 <sect3>
475 <title>Configuration Information</title>
476
477 <para>
478 The file used as the default <filename>/etc/php.ini</filename>
479 configuration file is recommended by the <application>PHP</application>
480 development team. This file modifies the default behavior of
481 <application>PHP</application>. If no <filename>/etc/php.ini</filename>
482 is used, all configuration settings fall to the defaults. You should
483 review the comments in this file and ensure the changes are acceptable
484 in your particular environment.
485 </para>
486
487 <para>
488 The fastCGI process manager uses the configuration file
489 <filename>/etc/php-fpm.conf</filename>. The default file shipped with
490 PHP includes all the <filename>/etc/php-fpm.d/*.conf</filename> in turn.
491 There is a shipped <filename>/etc/php-fpm.d/www.conf</filename> file,
492 that contains the parameters related to the interaction with the Apache
493 Web server.
494 </para>
495
496 <para>
497 You may have noticed the following from the output of the
498 <command>make install</command> command:
499 </para>
500
501<screen><computeroutput>You may want to add: /usr/lib/php to your php.ini include_path</computeroutput></screen>
502
503 <para>
504 If desired, add the entry using the following command as the
505 <systemitem class="username">root</systemitem> user:
506 </para>
507
508<screen role="root"><userinput>sed -i 's@php/includes"@&amp;\ninclude_path = ".:/usr/lib/php"@' \
509 /etc/php.ini</userinput></screen>
510
511 <para>
512 To enable fastCGI support in the <application>Apache</application>
513 web server, two LoadModule directives must be added to the
514 <filename>httpd.conf</filename> file. They are commented out, so just
515 issue the following command as
516 <systemitem class="username">root</systemitem> user:
517 </para>
518
519<screen role="root"><userinput>sed -i -e '/proxy_module/s/^#//' \
520 -e '/proxy_fcgi_module/s/^#//' \
521 /etc/httpd/httpd.conf</userinput></screen>
522
523 <para>
524 Those modules accept various <command>ProxyPass</command>
525 directives. One possibility is (as the
526 <systemitem class="username">root</systemitem> user):
527 </para>
528
529<screen role="root"><userinput>echo \
530'ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/srv/www/$1' >> \
531/etc/httpd/httpd.conf</userinput></screen>
532
533 <para>
534 Additionally, it may be useful to add an entry for
535 <filename>index.php</filename> to the DirectoryIndex directive of the
536 <filename>httpd.conf</filename> file. Lastly, adding a line to setup the
537 <filename class='extension'>.phps</filename> extension to show
538 highlighted <application>PHP</application> source may be
539 desirable:
540 </para>
541
542<screen><literal>AddType application/x-httpd-php-source .phps</literal></screen>
543
544 <para>
545 You'll need to restart the <application>Apache</application> web server
546 after making any modifications to the <filename>httpd.conf</filename>
547 file.
548 </para>
549
550 </sect3>
551
552 <sect3 id="php-init">
553 <title><phrase revision="sysv">Boot Script</phrase>
554 <phrase revision="systemd">Systemd Unit</phrase></title>
555
556 <para revision="sysv">
557 To automatically start the <command>php-fpm</command> daemon when the
558 system is rebooted, install the
559 <filename>/etc/rc.d/init.d/php</filename> bootscript from the
560 <xref linkend="bootscripts"/> package as the
561 <systemitem class="username">root</systemitem> user:
562 </para>
563
564 <para revision="systemd">
565 To start the <command>php-fpm</command> daemon at boot,
566 install the systemd unit from the <xref linkend="systemd-units"/>
567 package by running the following command as the
568 <systemitem class="username">root</systemitem> user:
569 </para>
570
571
572 <indexterm zone="php php-init">
573 <primary sortas="f-php">php</primary>
574 </indexterm>
575
576<screen role="root" revision="sysv"><userinput>make install-php</userinput></screen>
577
578<screen role="root" revision="systemd"><userinput>make install-php-fpm</userinput></screen>
579
580 </sect3>
581
582 </sect2>
583
584 <sect2 role="content">
585 <title>Contents</title>
586
587 <segmentedlist>
588 <segtitle>Installed Programs</segtitle>
589 <segtitle>Installed Libraries</segtitle>
590 <segtitle>Installed Directories</segtitle>
591
592 <seglistitem>
593 <seg>pear, peardev, pecl, phar (symlink), phar.phar, php,
594 php-cgi, php-config, php-fpm, phpdbg, and phpize</seg>
595
596 <seg>dba.{so,a} and opcache.{so,a} in
597 /usr/lib/php/extensions/no-debug-non-zts-20170718</seg>
598
599 <seg>/etc/php-fpm.d, /usr/{include,lib,share}/php and
600 /usr/share/doc/php-&php-version;</seg>
601 </seglistitem>
602 </segmentedlist>
603
604 <variablelist>
605 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
606 <?dbfo list-presentation="list"?>
607 <?dbhtml list-presentation="table"?>
608
609 <varlistentry id="php-prog">
610 <term><command>php</command></term>
611 <listitem>
612 <para>
613 is a command line interface that enables you to parse and
614 execute PHP code.
615 </para>
616 <indexterm zone="php php-prog">
617 <primary sortas="b-php">php</primary>
618 </indexterm>
619 </listitem>
620 </varlistentry>
621
622 <varlistentry id="pear">
623 <term><command>pear</command></term>
624 <listitem>
625 <para>
626 is the PHP Extension and Application Repository (PEAR) package
627 manager.
628 </para>
629 <indexterm zone="php pear">
630 <primary sortas="b-pear">pear</primary>
631 </indexterm>
632 </listitem>
633 </varlistentry>
634
635 <varlistentry id="php-fpm">
636 <term><command>php-fpm</command></term>
637 <listitem>
638 <para>
639 is the fastCGI process manager for PHP.
640 </para>
641 <indexterm zone="php php-fpm">
642 <primary sortas="b-php-fpm">php-fpm</primary>
643 </indexterm>
644 </listitem>
645 </varlistentry>
646
647 <varlistentry id="phpdbg">
648 <term><command>phpdbg</command></term>
649 <listitem>
650 <para>
651 is the interactive PHP debugger.
652 </para>
653 <indexterm zone="php phpdbg">
654 <primary sortas="b-phpdbg">phpdbg</primary>
655 </indexterm>
656 </listitem>
657 </varlistentry>
658
659 </variablelist>
660
661 </sect2>
662
663</sect1>
Note: See TracBrowser for help on using the repository browser.