#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のせいだと思うが…。