PHPでBOXのAPIを呼び出す方法(その2:Apache+PHP環境構築)

PHPでBOXのAPIを呼び出し、BOXのファイルを検索するため、Windows環境でApache+PHP環境を作る方法を記す。既に環境を持っている人はその3をご覧ください。

Apache+PHP環境構築(Windows)

Apacheのダウンロード

以下のApacheの公式サイトの最新版の「Download」リンクをクリック。

■Welcome! – The Apache HTTP Server Project
https://httpd.apache.org/

以下の「Files for Microsoft Windows」リンクをクリック。

https://httpd.apache.org/download.cgi#apache24

以下の「Apache Lounge」リンクをクリック。

https://httpd.apache.org/docs/current/platform/windows.html#down

以下の「httpd-2.4.54-win64-VS16.zip」リンクをクリック。

https://www.apachelounge.com/download/VS16/binaries/httpd-2.4.54-win64-VS16.zip

Apacheの設定

C:¥Program Files(x86)配下に「Apache Software Foundation」フォルダを作成する。このままだと管理者権限が必要なので右クリックで「プロパティ」をクリック。

「セキュリティ」タブをクリックして「編集」をクリック。

「Users」を選択し、「フル コントロール」にチェックを入れて「OK」クリック。

コマンドプロンプトでApache24のbinディレクトリまで移動して、httpdを実行してみると、以下のエラーが発生。

httpd: Syntax error on line 39 of C:/Program Files (x86)/Apache Software Foundation/httpd-2.4.54-win64-VS16/Apache24/conf/httpd.conf: ServerRoot must be a valid directory

/conf/httpd.conf をバックアップしておき、以下を編集する(最初からCの直下に「Apache24」フォルダを設置しておけば編集は不要)。

#Define SRVROOT "c:/Apache24"
Define SRVROOT "C:\Program Files (x86)\Apache Software Foundation\httpd-2.4.54-win64-VS16\Apache24"

ServerRoot "${SRVROOT}"

http://localhost/ にアクセスすると以下のように /htdocs/index.html が表示され、Apacheが動作していることを確認できる。

PHPの設定

以下のPHPのダウンロードページで「Windows downloads」をクリック。

■PHP: Downloads
https://www.php.net/downloads.php

以下のWindowsのバイナリファイルダウンロードページで、PHP8.1の「VS16 x64 Thread Safe」の「Zip」をクリックしてダウンロード。

■PHP For Windows: Binaries and sources Releases
https://windows.php.net/download#php-8.1

https://windows.php.net/downloads/releases/php-8.1.12-Win32-vs16-x64.zip

ダウンロードした「php-8.1.12-Win32-vs16-x64」をCドライブに直下に置き、先ほどと同様、右クリックのプロパティからセキュリティタブで「編集」し、自ユーザーに「フルコントロール」をチェックしておく。

Apacheのhttpd.confの最下行に以下を追加する。

LoadModule php_module "C:/php-8.1.12-Win32-vs16-x64/php8apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "C:/php-8.1.12-Win32-vs16-x64"

/htdocs/index.php ファイルを作成し、以下を記述する。

<?php
phpinfo();
?>

コマンドプロンプトに戻り、Ctrl+C でApacheを終了後、httpd を再実行し、http://localhost/index.php にアクセスするとPHPが動作していることを確認できる。

composerインストール

以下のページを参照し、コマンドプロンプトのcdで c:¥php-8.1.12-Win32-vs16-x64 に移動してphp.exeを実行できるディレクトリに移動後、以下を1行づつ実行する。

■Composer
https://getcomposer.org/download/

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

php composer-setup.php

php -r "unlink('composer-setup.php');"

以下のエラーが発生するので・・・

Warning: copy(): Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? in Command line code on line 1

php.ini を設定する。PHPディレクトリ配下の「php.ini-development」を「php.ini」にリネームし、以下の extension=openssl のコメントアウトを外す。

extension=openssl

今度は以下のエラーが発生するので・・・

PHP Warning:  PHP Startup: Unable to load dynamic library 'openssl' (tried: C:\php\ext\openssl 

php.ini を再度設定する。以下の設定を追記して再実行する。

extension_dir ="C:\php-8.1.12-Win32-vs16-x64\ext"

以下のように「composer.phar」ファイルが作成されると成功。

Composer (version 2.4.4) successfully installed to: C:\php-8.1.12-Win32-vs16-x64\composer.phar
Use it: php composer.phar

コマンドプロンプトで「php composer.phar –version」を実行できる。

c:\php-8.1.12-Win32-vs16-x64>php composer.phar --version
Composer version 2.4.4 2022-10-27 14:39:29

コマンドプロンプトで、cd C:\Program Files (x86)\Apache Software Foundation\httpd-2.4.54-win64-VS16\Apache24\htdocs でhtdocsフォルダに移動後、composerパッケージをダウンロードするコマンドを1行づつ実行する。

C:/php-8.1.12-Win32-vs16-x64/php c:/php-8.1.12-Win32-vs16-x64/composer.phar require firebase/php-jwt
C:/php-8.1.12-Win32-vs16-x64/php c:/php-8.1.12-Win32-vs16-x64/composer.phar require guzzlehttp/guzzle

以下のように表示され、vendor フォルダが作成される。

cacert.pem設置

以下のようなcURL error 60エラーが発生するかもしれない。

Fatal error: Uncaught GuzzleHttp¥Exception¥RequestException: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://api.box.com/oauth2/token

以下はPHP実行時にエラーが発生したエラーメッセージ。

call to undefined function openssl_pkey_get_private

上記エラー発生時は以下を参照しつつphp.iniの設定を行う。

■PHP開発中の curl: (60) Peer certificate cannot be authenticated with known CA certificates 対応方法 – Qiita
https://qiita.com/miyatahirotaka/items/473bc99692c36a1ff441

以下から.pemファイルをダウンロードし、confフォルダに置く。

http://curl.haxx.se/ca/cacert.pem

php.ini ファイルの以下を編集すればOK。httpdを再起動すれば反映される。

curl.cainfo ="C:\Program Files (x86)\Apache Software Foundation\httpd-2.4.54-win64-VS16\Apache24\conf\cacert.pem"

次回は、いよいよPHPでプログラムを作る。