はじめに

このページでは、FreeBSD上のapacheで、PHP5環境を構築する方法について説明します。

php5およびphp5-extensionsのインストール

php5はデフォルトでシステムにインストールされていませんので、別途システムにインストールする必要があります。

インストールはportsを利用して行います。
portsの取得および展開方法については、「最新のportsを取得して展開する」を参照してください。

portsの展開が完了した後、下記手順でphp5をmakeし、インストールします。

「php5」のインストール
$ cd /usr/ports/lang/php5
$ make config-recursive
$ make install clean

尚、「make config-recursive」の際、設定メニューが表示されるので、デフォルトでチェックされているものに加え、必要なものをチェックしてください。
最低限の設定として、「APACHE」および「MULTIBYTE」を設定しておけば問題ないと思います。
(前者は、apacheのDSOであるmod_php5.soを構築する設定で、後者はPHP5でUTF-8をはじめとするマルチバイト文字列を扱えるようにする設定です。)

続いて、「php5-extensions」を同じくportsからインストールします。

「php5-extensions」のインストール
$ cd /usr/ports/lang/php5-extensions
$ make config-recursive
$ make install clean

「make config-recursive」の際、設定メニューが表示されるので、デフォルトでチェックされているものに加え、必要なものをチェックしてください。
最低限必要なのは「MBSTRING」(php5のMULTIBYTEと同じく、UTF-8をはじめとするマルチバイト文字列を扱えるようにする設定)ぐらいですが、必要に応じて「GD」等のグラフィックライブラリや、PHP5と組み合わせて利用するデータベースの指定を行ってください。(私の環境ではPHP5にPostgreSQLを組み合わせて利用するため、「PGSQL」を指定しています。)

また、php5-extensionsの依存関係で、「php5-sqlite」がインストールされますが、この設定メニューも表示されます。
この際には「UTF8」にチェックを入れて、OKを選択してください。

「php.ini」の編集

次に、php5の設定ファイルである「php.ini」を編集して設定します。
標準では、「php.ini」は「/usr/local/etc/」に保存されていますので、こちらを編集して設定してください。

「php.ini」の編集
[PHP]
engine = On
zend.ze1_compatibility_mode = Off
short_open_tag = On
asp_tags = Off
precision    =  12
y2k_compliance = On
output_buffering = Off
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func=
serialize_precision = 100
allow_call_time_pass_reference = On
safe_mode = Off
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
disable_functions =
disable_classes =
expose_php = On
max_execution_time = 30
max_input_time = 60
memory_limit = 128M
error_reporting  =  E_ALL & ~E_NOTICE
display_errors = On
display_startup_errors = Off
log_errors = Off
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
variables_order = "EGPCS"
register_globals = Off
register_long_arrays = On
register_argc_argv = On
auto_globals_jit = On
post_max_size = 8M
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
default_charset = "UTF-8"
doc_root =
user_dir =
enable_dl = On
file_uploads = On
upload_max_filesize = 2M
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60

[Date]

[filter]

[iconv]

[sqlite]

[xmlrpc]

[Pcre]

[Syslog]
define_syslog_variables  = Off

[mail function]
SMTP = localhost
smtp_port = 25

[SQL]
sql.safe_mode = Off

[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1

odbc.max_links = -1

odbc.defaultlrl = 4096

odbc.defaultbinmode = 1

[MySQL]
mysql.allow_persistent = On
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off

[MySQLi]
mysqli.max_links = -1
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off

[mSQL]
msql.allow_persistent = On
msql.max_persistent = -1
msql.max_links = -1

[OCI8]

[PostgresSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0

[Sybase]
sybase.allow_persistent = On
sybase.max_persistent = -1
sybase.max_links = -1
sybase.min_error_severity = 10
sybase.min_message_severity = 10
sybase.compatability_mode = Off

[Sybase-CT]
sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10

[bcmath]
bcmath.scale = 0

[browscap]

[Informix]
ifx.default_host =
ifx.default_user =
ifx.default_password =
ifx.allow_persistent = On
ifx.max_persistent = -1
ifx.max_links = -1
ifx.textasvarchar = 0
ifx.byteasvarchar = 0
ifx.charasvarchar = 0
ifx.blobinfile = 0
ifx.nullformat = 0

[Session]
session.save_handler = files
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly = 
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor     = 100
session.gc_maxlifetime = 1440
session.bug_compat_42 = 1
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 4
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="

[MSSQL]
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatability_mode = Off
mssql.secure_connection = Off

[Assertion]

[COM]

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = "UTF-8"
mbstring.http_input = auto
mbstring.http_output = "UTF-8"
mbstring.encoding_translation = Off
mbstring.substitute_character = none;

[FrontBase]

[gd]

[exif]

[Tidy]

tidy.clean_output = Off

[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400

ちょっと長いですが、デフォルトの設定から変更されているものは、マルチバイト系の設定の部分がほとんどです。
頑張って編集してみてください。

なお、「magic_quotes_gpc」は、PHPスクリプト内で利用可能な「$_GET」「$_POST」「$_COOKIE」について、特殊な文字をエスケープして返すか否かの設定です。
「On」に設定すると、「'」や「"」、末尾が「0x5c」のコードの文字などをエスケープします。

勝手にエスケープしてくれるので、一見便利に見えますが、GETやPOSTメソッド、およびCookieで文字列を引き回すときや、Prepared Statementの機能を利用してこれらの変数から取得した文字列をデータベースに格納する場合等に、エスケープ文字「\」が意図せず増えて行く不具合の原因になります。

PHP5ではデフォルトで「On」ですが、上記の理由から「Off」に設定することをオススメします。

apache側の設定

ほとんどの場合、PHP5はapache経由で実行されると思いますので、PHP5をapache側から利用できるよう設定を行います。
以下の記述が「httpd.conf」に含まれているか確認し、含まれていない場合には追記を行ってください。

「httpd.conf」の編集
LoadModule php5_module          libexec/apache/libphp5.so

AddModule mod_php5.c

AddType application/x-httpd-php .php

また、必須ではありませんが、UserAgentがディレクトリまでのURLを指定してきた場合、任意のPHP5のスクリプトを返却したい場合には、下記の通りDirectoryIndexの指定中に、PHPスクリプトを指定してください。
(DirectoryIndexで指定したファイルが複数存在する場合には、先に指定したファイルのほうが先に参照されますので、自分の用途にあわせて適宜指定してください。)

「httpd.conf」の編集(DirectoryIndexへのPHPスクリプトの追加)
DirectoryIndex index.php index.pl index.cgi index.html

以上で設定は完了です。

設定が完了したら、apachectlを利用してapacheを再起動させるか、システムを再起動させるかして設定を反映させてください。
apachectlの利用方法については、「コマンドラインからapacheを起動/停止/再起動する」を参照してください。


あなたの探し物は見つかりましたか?
まさにこれだ
参考になった
ちょっと違う
これじゃない

何かメッセージがあればお願いします

このメッセージを非公開にする

ご注意

・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。


まだ評価がありません

表示できるメッセージはありません。