#author("2020-12-07T08:00:46+00:00","default:src128","src128")
#author("2020-12-07T08:13:23+00:00","default:src128","src128")
&tag(MacPorts/php7);
*目次 [#lfdfa383]
#contents
*関連ページ [#s19c1cae]
-[[../php5]]
*参考情報 [#sab2eba0]

*インストール&apache2に設定 [#d788cf07]

**以前のバージョンのアンインストール [#we184819]
-既存のphpバージョンをアンインストールしておく
 sudo port uninstall php71*

**必要なportのインストール [#le8f61dd]
-apache2用から使用するモジュール、mysql、mbstringモジュールをインストール。openssl、curlはWordPress用。
 $ sudo port install php74-apache2handler php74-mysql php74-mbstring php74-gd php74-openssl php74-curl
-mbstringやgdの設定ファイルは以下の場所に追加され自動的に有効になるようだ。あとから追加した場合apacheの再起動が必要。
#pre{{
/opt/local/var/db/php74/gd.ini, /opt/local/var/db/php74/mbstring.ini, /opt/local/var/db/php74/mysql.ini
}}
-以下のような情報が表示される。
#pre{{
 --->  Some of the ports you installed have notes:
  libpsl has the following notes:
    libpsl API documentation is provided by the port 'libpsl-docs'.
  mysql8 has the following notes:
    On activation if no /opt/local/etc/mysql8/my.cnf file exists one
    will be created which loads
    /opt/local/etc/mysql8/macports-default.cnf.

    If a /opt/local/etc/mysql8/my.cnf file exists MacPorts does not
    touch it and any changes you make to /opt/local/etc/mysql8/my.cnf
    will be preserved (e.g., during port upgrades, deactivations or
    activations). /opt/local/etc/mysql8/my.cnf is a good place to
    customize your mysql8 installation.

    Any changes made to /opt/local/etc/mysql8/macports-default.cnf
    will be lost during port upgrades, deactivations or activations so you
    are advised to not make changes here. Currently
    /opt/local/etc/mysql8/macports-default.cnf contains only one
    directive; to disable networking. With disabled networking it is
    possible to install and have running all the MacPorts mysql ports
    simultaneously.

    To set mysql8 as your preferred version of MySQL, use `port select`,
    as follows:

    $ sudo port select mysql mysql8
  php74 has the following notes:
    To customize php74, copy /opt/local/etc/php74/php.ini-development (if this is a development server) or
    /opt/local/etc/php74/php.ini-production (if this is a production server) to /opt/local/etc/php74/php.ini and then make changes.
  php74-apache2handler has the following notes:
    If this is your first install, you need to enable php74-apache2handler in your web server.
    To enable php74-apache2handler, run:

        cd /opt/local/lib/apache2/modules
        sudo /opt/local/bin/apxs -a -e -n php7 mod_php74.so
  php74-mysql has the following notes:
    To use mysqlnd with a local MySQL server, edit /opt/local/etc/php74/php.ini and set mysql.default_socket, mysqli.default_socket
    and pdo_mysql.default_socket to the path to your MySQL server's socket file.

    For mysql5, use /opt/local/var/run/mysql5/mysqld.sock
    For mysql51, use /opt/local/var/run/mysql51/mysqld.sock
    For mysql55, use /opt/local/var/run/mysql55/mysqld.sock
    For mysql56, use /opt/local/var/run/mysql56/mysqld.sock
    For mariadb, use /opt/local/var/run/mariadb/mysqld.sock
    For percona, use /opt/local/var/run/percona/mysqld.sock
}}
-とりあえずapache2のモジュールを組み込む。
#pre{{
 cd /opt/local/lib/apache2/modules
 sudo /opt/local/bin/apxs -a -e -n php7 mod_php74.so
}}


**httpd.confの基本設定 [#vf0e4351]
-httpd.confの編集
--httpd.confを開く
#pre{{
 $ cd /opt/local/etc/apache2
 $ vi httpd.conf
}}
--dir_moduleの変更
#pre{{
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>
}}
--mime_moduleの最後に追加
#pre{{
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
}}
-php.iniの作成
--php.iniを作成して開く
#pre{{
$ cd /opt/local/etc/php72
$ sudo cp php.ini-development php.ini
$ sudo vi php.ini
}}
--文字コードをUTF-8で統一する。dokuwikiを使用する場合、func_overload = 0じゃないとだめ。
--encoding_translationがOnだとPukiWikiの日本語ページに添付できない。そもそもこの設定はデフォルトオフが良い?[[mbstring.encoding_translation 邪魔なだけ、と思うのは私だけなのか? – ぼらこみゅ:https://pe-co.com/2013/08/13/mbstring-encoding_translation%E3%80%80%E9%82%AA%E9%AD%94%E3%81%AA%E3%81%A0%E3%81%91%E3%80%81%E3%81%A8%E6%80%9D%E3%81%86%E3%81%AE%E3%81%AF%E7%A7%81%E3%81%A0%E3%81%91%E3%81%AA%E3%81%AE%E3%81%8B%EF%BC%9F/]]
#pre{{
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = Off
mbstring.detect_order = auto
mbstring.substitute_character = none
mbstring.func_overload = 0
}}
--タイムゾーンも設定しておく。
#pre{{
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Asia/Tokyo"
}}
-再起動
 $ sudo /opt/local/sbin/apachectl restart


**MySQLとの接続設定 [#e5784a5b]
-/opt/local/etc/php72/php.iniを編集。mysql.default_socket、mysqli.default_socket and、pdo_mysql.default_socketに次の値を設定(mysql.default_socketは存在しないかも?)
-mysql5.5を接続する場合。
 /opt/local/var/run/mysql55/mysqld.sock
-mysql8を接続する場合。
 /opt/local/var/run/mysql8/mysqld.sock
*トラブルシューティング [#w793b2af]

**PHPが解釈されずダウンロードされてしまう [#q21962c6]
-AddTypeが追加されていることを確認。
-MacPortsの仕様だと「extra/mod_php73.conf」をダウンロードするのが推奨っぽいが?httpd.confに直接書いても問題ない。
-AddTypeは「ifmodule mime_module」の中だろうが外だろうが関係ない。
-AddTypeがあってもダウンロードされる場合、ブラウザのキャッシュのせいかも。curlで確認してみる。

**@rpath/libargon2.1.dylibのエラー [#a8b27555]
-mod_php74.soを組み込もうとしたら以下のエラー。
#pre{{
httpd: Syntax error on line 167 of /opt/local/etc/apache2/httpd.conf: Cannot load lib/apache2/modules/mod_php74.so into server: dlopen(/opt/local/lib/apache2/modules/mod_php74.so, 10): Library not loaded: @rpath/libargon2.1.dylib\n  Referenced from: /opt/local/lib/apache2/modules/mod_php74.so\n  Reason: image not found
}}
-原因不明M1のせいかBig Surのせいだと思うが…。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS