組み込みのPHPをMacOS Catalina 10.15で使用して、Zip拡張機能を自分でコンパイルしようとしています。
新しいMacOSカタリナでは、内部にPHPライブラリへの無効なパスが含まれているため、phpize
ツールは使用できません。ボリューム/usr
は読み取り専用でマウントされるため、これまでに使用されたすべてのメソッドが無効になります。
AppStoreから Xcode 11 をインストールしました。
次に、デスクトップにコピーしてXcodeを参照する別のphpize
を作成しました
cp /usr/bin/phpize ~/Desktop/
次に、vim
で編集のために開きました
vim ~/Desktop/phpize
そして8行目を次のように修正しました
includedir = "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php"
次に、ダウンロード php-7.3.8 、MacOS Catalina 10.15に組み込まれている同じPHPバージョン。
ダウンロードフォルダーにアーカイブファイルを解凍した後、ターミナルをそのフォルダーまで開きました
cd ~/Downloads/php-7.3.8/ext/Zip
中に入ると、構成するZip拡張機能を準備するためにカスタマイズされたphpizeを起動します
~/Desktop/phpize
拡張機能が構成可能になりました。必要なzlib
への追加パスを使用して構成を起動しました
Sudo ./configure --with-zlib-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/
次のステップはコンパイルとインストールですが、それでもエラーが発生しますphp.h file not found
make && make install
たぶん、どこかにまだ間違った道があります...
CPPFLAGS
を使用してmake
を右に指すことができます/usr/include
はXcode.app
内にあります。
INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
make CPPFLAGS="-I${INCLUDE_PATH}/php -I${INCLUDE_PATH}/php/main -I${INCLUDE_PATH}/php/TSRM -I${INCLUDE_PATH}/php/Zend -I${INCLUDE_PATH}/php/ext -I${INCLUDE_PATH}/php/ext/date/lib"
また、phpize
を編集するときは、法的記号(=
)の前後にスペースを入れないでください。
フォローアップコメントに対処するため、拡張機能を適切な場所に移動できないため、make install
も失敗します。ただし、*.so
ファイルに署名するため、コマンドを実行する必要があります。
make install
が実行されたら、実行可能ファイルを安全な場所に移動します。 /usr/local/php/extensions
を使用します。
たとえば、Xdebug
の場合(.so
の名前を拡張機能の名前に変更します):
Sudo mkdir -p /usr/local/php/extensions
Sudo cp $(php-config --extension-dir)/xdebug.so /usr/local/php/extensions
次に、PHP構成を編集して、拡張機能Sudo nano /etc/php.ini
を有効にするために、下部に必要な行を追加します(Zipの正確な行がわからない)。
これが完了したら、組み込みサーバーを再起動して確認します。
Sudo apachectl restart