なんの記事?

AppServiceのPHPプログラムから外部のFTPサーバーにつなぎたい人が読む記事だよ
関連してPHPの拡張ファイルを組み込みたい人にも役立つかもしれない

AppServiceにFTPで接続したい人は記事がいっぱいあるのでそっちを読もう

経緯

AppServiceの性質なのかディスクが物凄く遅いため正直他人にはお勧めできないのだが、やむに止まれぬ事情があってAzure AppService上でWordpressをホストしている。

そして今回、その圧倒的なディスクの遅さに「BackWPup」が音をあげてしまったため、サイトのバックアップが停止しまったという極めてしょうもない状況である。

この際、最近のバックアップソフトをマイブームである「UpdraftPlus Backups」に変更してお手軽に済ませようと画策したところ、どうも初期状態ではPHPのftp_connectが利用できない模様...どうやらftpの拡張機能がデフォルトで使えないようだ

ということで現在利用しているPHP7.3で拡張機能「php_ftp」を有効にしていきたい

参考

Azure App Service での PHP の構成方法

基本的にというか、すべてここに書いてあるとおり
参考リンクは網羅的なので、こちらの方が順を追っているくらいの差、詳しくはリンク先を読もう

iniフォルダの作成

当該サイトにKuduで接続し「D:\home\site\」に「ini」フォルダを作成する。

Image from Gyazo
Image from Gyazo

iniファイルの作成

作成したiniフォルダに以下のファイルを作成する

D:\home\site\ini\extensions.ini

D:\home\site\ini\settings.ini

extensions.ini

Image from Gyazo
内容を編集し、以下を書き込んでおく

; Enable Extensions
extension=php_ftp

確認できた拡張一覧

D:\Program Files\PHP\v7.3\ext>dir /b /l
php_bz2.dll
php_com_dotnet.dll
php_curl.dll
php_dba.dll
php_enchant.dll
php_exif.dll
php_fileinfo.dll
php_ftp.dll
php_gd2.dll
php_gettext.dll
php_gmp.dll
php_imap.dll
php_interbase.dll
php_intl.dll
php_ldap.dll
php_mbstring.dll
php_mysqli.dll
php_oci8_12c.dll
php_odbc.dll
php_opcache.dll
php_openssl.dll
php_pdo_firebird.dll
php_pdo_mysql.dll
php_pdo_oci.dll
php_pdo_odbc.dll
php_pdo_pgsql.dll
php_pdo_sqlite.dll
php_pdo_sqlsrv.dll
php_pgsql.dll
php_phpdbg_webhelper.dll
php_shmop.dll
php_snmp.dll
php_soap.dll
php_sockets.dll
php_sodium.dll
php_sqlite3.dll
php_sqlsrv.dll
php_sysvshm.dll
php_tidy.dll
php_wincache.dll
php_xmlrpc.dll
php_xsl.dll
php_zend_test.dll

settings.ini

こちらは任意で編集※FTPを利用するだけなら不要

Image from Gyazo

;allow_url_include = ON

PHP_INI_SCAN_DIRの設定

構成 から「アプリケーション設定」を選択

アプリケーション設定 セクションの「+ 新しいアプリケーション設定」をクリック

キー 「PHP_INI_SCAN_DIR」
値 「D:\home\site\ini」

Image from Gyazo

Image from Gyazo

WebAppsを再起動

Image from Gyazo

完了

Last modified: 2020-06-01