Maybaygiare.org

Blog Network

macOS11.0Big Sur Apache Setup:Multiple PHP Versions

Mac開発者のためのマルチパートブログシリーズの最初の部分

Andy Miller posted on11/13/2020in macos+bigsur+apache+homebrew+php18mins
パート1:Macos11.0BIG Sur Web開発環境

MacosでWebアプリケーションを開発することは本当の喜びです。 Apache、PHP、MySQLの上に素晴らしいUIを提供する人気のあるMAMP Proなど、開発環境を設定するための多くのオプションがあります。 しかし、MAMP Proには遅いダウンがある、または古いバージョンがない、または設定テンプレートと非標準ビルドの制限的なシステムのために単に動作が悪

人々がしばしば別のアプローチを探すのはこのような時代ですが、幸いにもそれがあり、セットアップには比較的簡単です。このブログ記事では、Apache2の設定と設定について説明します。4と複数のPHPバージョン。 この2つの記事シリーズの2番目のブログ記事では、MySQL、Apache仮想ホスト、APCキャッシュ、およびXdebugのインストールについて説明します。

2019/11/27PHP8.0に関する情報を追加するように更新
2020/11/13macOS11.0Big Surのリリースを反映するように更新
2019/12/02PHP7.4の最新リリースと公式2019/08/10macOS10のリリースを反映して更新しました。2018/12/12PHP7.3の最新リリースとBrewからのPHP7.0の削除を反映するように更新しました。

過去にHomebrew/phpHomebrew/coreアプローチにアップグレードしようとしている場合は、最初に新しいアップグレードHomebrewに従うことによって、現在のインストールをクリーンアップする必要があります。

このガイドは経験豊富なweb開発者を対象としています。 あなたが初心者の開発者であれば、MAMPまたはMAMP Proを使用してより良いサービスを受けることができます。XCodeがまだインストールされていない場合は、homebrewで使用されるコマンドラインツールを最初にインストールすることをお勧めします。

xcode-select --install

Homebrewのインストール

このプロセスは、Homebrewと呼ばれるmacOSパッケージマネージャーに大きく依存しています。 brewコマンドを使用すると、macに強力な機能を簡単に追加できますが、最初にインストールする必要があります。 これは簡単なプロセスですが、ターミナル(/Applications/Utilities/Terminal)アプリケーションを起動してから、次のように入力する必要があります。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

ターミナルのプロンプトに従って、必要に応じてパスワードを入力してください。 これには数分かかるかもしれませんが、完了したら、brew正しくインストールされていることを確認するための簡単な方法は、単に入力します。

brew --version
Homebrew 2.5.10Homebrew/homebrew-core (git revision 542ff0; last commit 2020-11-13)

おそらく、次のコマンドを実行して、すべてが正しく設定されていることを確認する必要があります:p>

brew doctor

何かを修正する必要があるかどうかを指示します。

Big Sur Required Libraries

Big Surにfreshをインストールすると、以下のすべての手順を完了するときに不足していたいくつかのライブラリに遭遇しました。 簡単にするために、今すぐ実行してください:

brew install openssl

Apacheのインストール

a最新のmacOS11.0Big SurにはApache2.4がプリインストールされていますが、Appleはこのリリースで必要なスクリプトをいくつか削除しているため、Homebrewでこのバージョンを使用するのは簡単な作業ではなくなりました。 ただし、解決策は、Homebrew経由でApache2.4をインストールし、標準ポート(80/443)で実行するように構成することです。

組み込みのApacheが既に実行されている場合は、最初にシャットダウンし、自動ロードスクリプトを削除する必要があります。 新規インストールであっても、これらのコマンドをすべて順番に実行するだけでは本当に害はありません。

sudo apachectl stopsudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null

今、Brewが提供する新バージョンをインストールする必要があります。

brew install httpd

オプションなしで、httpdソースからビルドする必要はないので、かなり迅速にインストールされます。 完了すると、次のようなメッセージが表示されます。

🍺 /usr/local/Cellar/httpd/2.4.46: 1,658 files, 27.9MB

新しいApacheサーバーが自動起動されるように設定する必要があります

brew services start httpd

HomebrewのApacheをインストールし、特権アカウントで自動起動するように設定しました。 すでに実行されているはずなので、ブラウザでサーバーに到達しようとすると、http://localhost:8080を指すと、「動作します!”.

トラブルシューティングヒント

ブラウザがサーバーに接続できないというメッセージが表示された場合は、まず

ps -aef | grep httpd

Apacheが起動して実行されている場合は、いくつかのhttpdプロセスが表示されるはずです。

Apacheを再起動してみてください:

brew services restart httpd

再起動中に新しいターミナルタブ/ウィンドウでApacheエラーログを見て、何か無効であるか問題:

tail -f /usr/local/var/log/httpd/error_log

Apacheはbrew servicesコマンドを介して制御されるため、使用する便利なコマンドは次のとおりです。

$ brew services stop httpd$ brew services start httpd$ brew services restart httpd

Visual Studio Code

過去のガTextEdit

プリインストールされているアプリケーション。 しかし、これはひどいエディタであり、Big Surのための私のガイドをテストするとき、私はエンコード、行番号の検索などの問題に遭遇し続けました。 より良い解決策は、単により良いエディタをインストールすることです。 だから、まだ驚くほど汎用性の高い、100%無料、Visual Studioのコードをインストールしてくださ Mac、Windows、Linuxで利用できますが、今はmacバージョンのみを気にしています。

Visual Studio Codeサイトに移動し、Mac用のダウンロードをクリックします

ダウンロードしたら、事前に指定されたアプリケーションの場所にアプリケーションをドラ 次に、コマンドラインツールをインストールするので、公式のステップバイステップの指示に従って、ターミナルからcodeコマンドを使

Apache Configuration

動作するwebサーバーができたので、ローカル開発サーバーとして機能するように構成を変更することをしたいと思います。Brewの最新バージョンでは、listenポートをデフォルトの808080に手動で設定する必要があるため、Apacheの設定ファイル/usr/local/etc/httpd/httpd.confを編集する必要があります。上記の手順に従った場合は、Visual Studio Codeを使用してファイルを編集できるはずです。codeターミナルコマンド。 ただし、デフォルトのTextEditorアプリケーションを使用して編集を実行する場合は、open -eコマンドの後にファイルへのパスを使用できます。p>VSC

という行を見つけます

Listen 8080

そしてそれを変更します80:

80:VSC

Listen 80

次は、apacheのドキュメントルートを変更するために使用するように設定します。 これは、Apacheがファイルを提供するフォルダです。 デフォルトでは、ドキュメントルートは/usr/local/var/wwwとして構成されています。 これは開発マシンであるため、ドキュメントルートを変更して、自分のホームディレクトリ内のフォルダを指すようにしたいとしましょう。

DocumentRootという用語を検索すると、次の行が表示されます。

DocumentRoot "/usr/local/var/www"

これをユーザーディレクトリを指すように変更します。your_userはユーザーアカウントの名前です。

DocumentRoot /Users/your_user/Sites
DocumentRoot /Users/your_user/Sites
DocumentRoot /Users/your_user/Sites
DocumentRoot /Users/your_user/Sites
DocumentRoot /Users/your_user/Sites
DocumentRoot /Users/your_user/Sites

また、documentroot行のすぐ下に<Directory>タグ参照を変更する必要があります。 これはまた、新しいドキュメントルートを指すように変更する必要があります:TextEditはおそらくそれらをスマート引用符に変換しようとし、Apacheを再起動しようとすると構文エラーが発生するため、ディレクトリパスの周りの省略可能な引用符を削除しました。 引用符の周りを編集してそのままにしても、ドキュメントを保存すると変換が発生し、エラーが発生する可能性があります。同じ<Directory>AllowOverride設定がありますが、これは次のように変更する必要があります:

## AllowOverride controls what directives may be placed in .htaccess files.# It can be "All", "None", or any combination of the keywords:# AllowOverride FileInfo AuthConfig Limit#AllowOverride All

また、デフォルトでコメントアウトされているmod_rewriteを有効にする必要があります。 mod_rewrite.so#/を削除して行のコメントを解除します(これは、単一または複数の行のコメントを解除してコメントを解除する簡単な方法です。

#

LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

ユーザー&グループ

これで、ホームディレクトリのSitesフォルダを指すapache設定があります。 しかし、一つの問題はまだ存在します。 デフォルトでは、apacheはユーザーdaemondaemonhttpd.confUserGroupApacheが実行されるように設定するための二つの設定があります。 これらをユーザーアカウントと一致するように変更します(your_userstaff:

User your_userGroup staff

Servername

Apacheは設定でサーバー名を持つのが好きですが、これはデフォルトで無効になっているため、次のように検索します。

#ServerName www.example.com:8080

そしてそれを次のように置き換えます。

ServerName localhost

Sites FolderSitesフォルダを作成する必要があります。 これは、端末またはFinderで行うことができます。 この新しいSitesindex.html<h1>My User Web Root</h1>のようなダミーコンテンツ

mkdir ~/Sitesecho "<h1>My User Web Root</h1>" > ~/Sites/index.html

apacheを再起動して、設定の変更が有効になっていることを確認します。

brew services stop httpdbrew services start httpd

Apacheの再起動時にエラーが発生した場合は、前に設定したDocumentRootブラウザを指すhttp://localhost:8080ShiftReloadが必要な場合があります。P>

非Sudo httpdサービス開始のトラブルシューティング

私は一般的な問題の解決策を見つけるように、より多くのヒントと試してみるべきことで、このセクションを更新します。 いくつかの”ライブ”の助けを得るために私たちの#macos Discordチャットに飛び乗ってくださ今年、macOS Big Surでは、sudohttpdhttpd.confで定義されたユーザー/グループとして実行されていましたが)、そのバージョンからこれにアップグレードした人にとっては、問題がありました。私は自分でいくつかの問題に遭遇しましたが、それをかなり簡単に動作させることができましたが、他の人はより広範な問題を報告しています。

brew services start httpdを使用しているときにApacheが起動していない場合は、これらの手順を試してください。

まず、apacheを直接起動してみてください:

/usr/local/bin/httpd -k start

これはbrew servicesコマンドをバイパスし、多くの場合、特定の問題を出力します。 ログファイルに書き込むことができないという問題が報告されている場合は、現在のログhttpdログファイルをすべて削除してみてください。

rm -Rf /usr/local/var/log/httpd/*

次のようなメッセージが表示された場合Address already in use: AH00072: make_sock: could not bind to addressListenhttpd.conf:

Listen 0.0.0.0:80

PHPのインストール

Brewを介して既存のPHPのインストールがある場合は、このセクションを続行する前に、最初に私たちのアップグレードHomebrewガイドであなたのセットアップをクリーンアップする必要があります。2018年3月末まで、すべてのPHP関連の醸造はHomebrew/phpHomebrew/coreパ これはよりよく維持されるべきですが、はるかに完全ではないパッケージのセットです。PHP5.6、PHP7.0、およびPHP7。1はサポート外であり、本番環境では推奨されていませんが、これらのサポートされていないバージョンを開発環境でテストする正当な理由があります。 これらのバージョンは、icu4copensslの最新バージョンを使用するために、「ソースから構築」する必要Php7.2から7.4まではBrewによって正式にサポートされていますが、これらもビルドする必要がありますが、かなり遅いことを覚えておいてくださ 私たちのガイドの最新バージョンでは、多くのバージョン(PHP8.0ビルドを含む)が事前に構築されているため、@shivammahturの新しいタップを使用します。

PHP8.0がリリースされたばかりで、インストールすることはできますが、互換性のあるPHPモジュールが完全に利用可能になるには時間がかかる場合があ

brew tap shivammathur/php

さまざまなバージョンのPHPをインストールし、必要に応じて簡単なスクリプトを使用してそれらを切り替えることによっ インストールしたくないバージョンを自由に除外してください。また、必要に応じてPHPの構成設定を微調整する必要があるかもしれません。 変更する一般的なことは、メモリ設定、またはdate.timezone構成です。 PHPの各バージョンのphp.iniファイルは、次のディレクトリにあります。

/usr/local/etc/php/5.6/php.ini/usr/local/etc/php/7.0/php.ini/usr/local/etc/php/7.1/php.ini/usr/local/etc/php/7.2/php.ini/usr/local/etc/php/7.3/php.ini/usr/local/etc/php/7.4/php.ini/usr/local/etc/php/8.0/php.ini

この時点で、すべての端末タブとウィンドウを閉じることを強くお勧めします。 これは、次のステップを続行するために新しい端末を開くことを意味します。 これは、いくつかの本当に奇妙なパスの問題が既存の端末で発生する可能性があるため、強くお勧めします(私を信頼して、私はそれを見ました!).

これらのPHPバージョンはインストールされていますがリンクされていません。 PHPに切り替えるには5.6例えば、次のように入力します。

brew unlink php && brew link --overwrite --force [email protected]

正しいバージョンになっていることを簡単にテストします。

php -v
PHP 5.6.40 (cli) (built: Jul 2 2020 04:41:54) Copyright (c) 1997-2016 The PHP GroupZend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

とに切り替えるには

php -v
PHP 5.6.40 (cli) (built: Jul 2 2020 04:41:54) Copyright (c) 1997-2016 The PHP GroupZend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

7.4

:

brew unlink php && brew link --overwrite --force [email protected]

正しく変更されていることを確認します:

php -v
PHP 7.4.12 (cli) (built: Oct 30 2020 00:56:27) ( NTS )Copyright (c) The PHP GroupZend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.12, Copyright (c), by Zend Technologies

Apache PHP Setup-Part1

PHPバージョンを正常にインストールしましたが、Apacheにそれらを使用するよ あなたは再び編集する必要があります/usr/local/etc/httpd/httpd.confLoadModulemod_rewriteモジュールでなければなりません:

LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

この下に次のlibphpモジュール:

LoadModule php5_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp5.so#LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so#LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so#LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so#LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so#LoadModule php7_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp7.so#LoadModule php_module /usr/local/opt/[email protected]/lib/httpd/modules/libphp.so

一度にPHPを処理するモジュールは1つしかないので、今のところ[email protected]他のすべてのエントリはコメントアウトされていますが、コメント解除されています。 これは、Php要求を処理するためにPHP5.6を使用するようにApacheに指示します。 (私たちは、後でPHPのバージョンを切り替える機能を追加します)。

また、PHPのディレクトリインデックスを明示的に設定する必要があるので、このブロックを検索します。

<IfModule dir_module> DirectoryIndex index.html</IfModule>

次のように置き換えます。

<IfModule dir_module> DirectoryIndex index.php index.html</IfModule><FilesMatch \.php$> SetHandler application/x-httpd-php</FilesMatch>

ファイルを保存してApacheを停止し、PHPをインストールしたので、再度起動します:PHPがインストールされ、期待どおりに実行されているかどうかをテストする最良の方法は、phpinfo()を使用することです。 これは実稼働マシンに残しておきたいものではありませんが、開発環境では非常に貴重です。info.phpSites/http://localhost/info.phpにポイントすると、光沢のあるPHP情報ページが表示されます:p>

同様のphpinfo結果が表示された場合は、おめでとうございます! これで、ApacheとPHPが正常に実行されました。 他のPHPバージョンをテストするには、LoadModule ... [email protected] ...エントリをコメントし、他のいずれかのコメントを解除します。 その後、単にapacheを再起動し、同じページをリロードします。

PHP Switcher Script

PHP5.6を使用するようにApacheをハードコードしましたが、実際にはバージョンを切り替えることができるようにしたいと考えています。 幸いにも、いくつかの勤勉な個人はすでに私たちのためにハードワークを行い、非常に便利な小さなPHPスイッチャースクリプトを書いています。このsphpスクリプトがPHP8.0をサポートするように更新されました。 そのバージョンを使用する場合は、以下のプロセスを繰り返して最新バージョンを入手してください。私たちは、brewの標準にsphp/usr/local/bin:

curl -L https://gist.githubusercontent.com/rhukster/f4c04f1bf59e0b74e335ee5d186a98e2/raw/0c36a5067fbd63e6a36700a6aaa119df0836bdfc/sphp.sh > /usr/local/bin/sphpchmod +x /usr/local/bin/sphp

あなたのパスを確認してください

自作は、その優先を追加している必要があります/usr/local/bin

/usr/local/sbin/usr/local/bin/usr/bin/usr/local/sbin/usr/sbin~/.zshrcファイル。 シェルで一時的に行うには、次のように入力します:

export PATH=/usr/local/bin:/usr/local/sbin:$PATH

PHP切り替えのテスト

これらの手順を完了したら、コマンドを使用してPHPバージョンを切り替えることができるはずですsphpその後にPHPバージョンの二桁の値を続けます。

sphp 7.1

おそらく、あなたのバージョンを入力する必要があります。管理者パスワード、そしてそれはあなたにいくつかのフィードバックを与える必要があります:

Switching to [email protected]
Switching to [email protected] your shellUnlinking /usr/local/Cellar/[email protected]/5.6.40... 0 symlinks removedUnlinking /usr/local/Cellar/[email protected]/7.1.33... 0 symlinks removedUnlinking /usr/local/Cellar/[email protected]/7.2.34... 0 symlinks removedUnlinking /usr/local/Cellar/php/7.4.12... 24 symlinks removedLinking /usr/local/Cellar/php/7.4.12... 24 symlinks createdSwitching your apache confRestarting apachePHP 7.4.12 (cli) (built: Oct 30 2020 00:56:27) ( NTS )Copyright (c) The PHP GroupZend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.12, Copyright (c), by Zend TechnologiesAll done!

ブラウザを再び指すことによって、apacheがphp7.4を実行しているかどうかをテストしますhttp://localhost/info.php。 このガイドの以前のバージョンからアップグレードし、PHP8をインストールしている場合は、次のようなメッセージが表示されることがあります。Unknown version of PHP. PHP Switcher can only handle arguments of: 5.6,7.0,7.1,7.2,7.3,7.4sphpスクリプトが更新されました。

PHPのバージョンが競合しているというメッセージが表示された場合は、おそらくtapsの競合があります。 以前のPHPバージョンをアンインストールし、古いタップを削除し、新しいタップを追加してから、上記の構文を使用してPHPバージョンを再インストールする必 たとえば、次のようにします。

brew untap exolnet/deprecatedbrew tap shivammathur/phpbrew install shivammathur/php/[email protected]

Grav CMSで設定をテストします!Gravをすばやくインストールしてテストするよりも、新しい強力な設定をテストする方が良い方法は何ですか?

世界で最高のフラットファイルCMS♥! いくつかの簡単な端末コマンドでこれを行うことができます:

cd ~/Sitescurl -OJL https://getgrav.org/download/core/grav-admin/latest
 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0100 646 100 646 0 0 1664 0 --:--:-- --:--:-- --:--:-- 1664100 10.5M 100 10.5M 0 0 8198k 0 0:00:01 0:00:01 --:--:-- 21.6Mcurl: Saved to filename 'grav-admin-v1.6.28.zip'

次に、zipファイルを抽出するだけです:これにより、zipが~/Sites/grav-adminhttp://localhost/grav-admin:

関連する情報を入力して新しい管理者ユーザーを作成し、[ユーザーの作成]をクリックして管理者に入ります。 他の手順は必要ありません。p>

すべて完了!!!!PHPやその他のBrewパッケージを更新する

Brewは、PHPやインストールした他のパッケージを更新するのが非常に簡単になります。 最初のステップは、Brewを更新して、利用可能な更新のリストを取得することです。

brew update

これにより、利用可能な更新のリストと削除された式が吐き出されます。 パッケージをアップグレードするには、次のように入力します。

brew upgrade

インストールされている各PHPバージョンに切り替えて、updateを再度実行して、各PHPバージ

特定の/最新のPHPバージョンのアクティブ化

PHPリンクの設定方法により、一度に一つのバージョンのPHPのみがリンクされ、現在のアクティ 次のように入力して、現在のアクティブなバージョンを確認できます。

php -v

次のように入力して、PHPパッケージの特定のバージョンを確認できます。

brew info [email protected]
PHP 7.4.12 (cli) (built: Oct 30 2020 00:56:27) ( NTS )Copyright (c) The PHP GroupZend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.12, Copyright (c), by Zend Technologiesrhuk@macos-big-sur ~ % brew info [email protected]: stable 7.4.12 (bottled), HEADGeneral-purpose scripting languagehttps://www.php.net//usr/local/Cellar/php/7.4.12 (497 files, 72.2MB) * Poured from bottle on 2020-11-13 at 11:57:43From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/php.rbLicense: PHP-3.01==> DependenciesBuild: httpd ✔, pkg-config ✔Required: apr ✔, apr-util ✔, argon2 ✔, aspell ✔, autoconf ✔, curl-openssl ✔, freetds ✔, gd ✔, gettext ✔, glib ✔, gmp ✔, icu4c ✔, krb5 ✔, libffi ✔, libpq ✔, libsodium ✔, libzip ✔, oniguruma ✔, openldap ✔, [email protected] ✔, pcre2 ✔, sqlite ✔, tidy-html5 ✔, unixodbc ✔...

さて、この3つのパートシリーズの第1部をラップします。php5.6、7を切り替える簡単な方法。0, 7.1, 7.2, 7.3, 7.4, そして、8.0。 MySQL、仮想ホスト、APCキャッシュ、YAML、およびXdebugを使用して環境を設定する方法については、パート2をご覧ください。 また、パート3では、Apache仮想ホスト用にSSLを設定する方法についても説明します。

コメントを残す

メールアドレスが公開されることはありません。