新年は1月9日(火)より営業を開始いたします。
尚、上記期間のお電話及びメールによるお問い合わせにつきましては、
2024年1月9日(火)より順次ご対応させていただきます。
ご不便をお掛けしますが、何卒ご了承くださいますよう宜しくお願い申し上げます。
]]>ワーケーションについての説明は、昨年のワーケーションのレポートの際に説明させていただいたので、そちらをご参照ください。
弊社には、国内のワーケーションであれば、年1回、出張と同じ扱いで会社が宿泊費・交通費などの費用を負担してくれる
「ワーケーション制度」というものがあり、私自身の歴史好きが講じて、このワーケーション制度を利用し、札幌市から福岡市へワーケーションしましたのでレポートします。
〇 旅程
福岡市は、福岡県の県庁所在地で、九州最大の都市で人口は158万を超えます。歴史ある寺社仏閣の他、キャナルシティ博多などの近代的なショッピング モールでも知られています。キャナルシティと命名されるだけあって、川や水路が張り巡らされ都市で、舞鶴公園には、黒田官兵衛が手掛けたとされる福岡城跡があり、近代と情緒ある歴史的な建物が融合された水の都市です。
〇 2023/10/5(木)
移動日です。
札幌駅から新千歳空港、新千歳空港から福岡空港、福岡空港から博多へ移動しました。飛行機は、SkyMark 社の利用で、道すがらノートPCを広げ仕事をしながら移動していました。
・タイムスケジュール
19時半からは観光と言うよりは、夕食を取りに外出した程度で、事前にリサーチした
「博多かわ屋」さんへ、鳥皮と焼きラーメンをいただきにお邪魔しました。
〇 2023/10/6(金)
・タイムスケジュール
この日は、キャナルシティ博多、中州へ観光に赴きました。
比較的、早い時間に訪問できたので、屋台もあまり混んでいない状態で、
こちらも、事前にリサーチした屋台の「やまちゃん」に、豚骨ラーメンをいただきにお邪魔しました。
〇 2023/10/7(土)
・この日は、事前リサーチをしていたモーニングをいただきに天神に赴き、その後、福岡城へ向かい、一日中、福岡城の観光をしていました。この日の目的は、先ず、福岡城の天守を目指して、大手門から天守まで各曲輪を通り上り詰めること。その後、福岡城の全体を探るため、福岡城の縄張を周遊し、お城から見た城下町と、城下町から見たお城を体感するため、福岡城の城下町を散策することでした。
・福岡城について
皆さんご存じなので、説明は不要だとは思いますが…、福岡城は、黒田長政が、関ヶ原の合戦の功績によって、徳川家康から筑前52万石を与えられ、慶長6年(1601年)から7年の歳月をかけて築城された城です。別名、舞鶴城ともいい、築城は、黒田長政の父で、黒田官兵衛が手掛けた城になります。黒田官兵衛は、言わずと知れた天才軍師で、豊臣秀吉に仕えていましたが、名参謀が故に、主君からは信頼以上に恐れられることもあった言われます。
黒田官兵衛が手掛けただけあって、敵との戦を想定した城の作りになっており、虎口や馬出しなど、防衛力がとても高い城だったことが伺えます。また、あらゆる箇所に枡形があり、簡単には攻略できない仕掛けが多々見受けられました。残念ながら、建物が残っていないため、破風や忍返し、狭間などは見ることが出来ませんが、雰囲気は体感できます。福岡城自体は、梯郭式(ていかくしき)の平山城で、三の丸まで存在する大きな城です。
三の丸跡
天守台跡
美しい景観のお城は、今も観光の名所として日本全国に現存しますが、元々は色々な合理的な機能を備えた軍事拠点であり、政治拠点でもあったりします。城門、櫓、塀、お濠、城下町など、それぞれの作り方ひとつひとつに工夫があり、敵の侵入を防ぐための役割を担っています。
・城下町を散策して
大名という地名があったり薬院、唐人、警固など、何処にどんな人を住まわせていたのか?が分かる城下町ならではの名残の地名が多々ありました。戦国時代、城下町は、お城を守るために防衛力をもった配置にするのが主流になり、主に2重や3重の構造にするのが主流でした。時代背景を考えながら、何故、この城下町の作りにしたのか?なぜ、このお濠の配置にしたのか?などを考え散策すると、色々な気付きと疑問が生まれます。また、古地図を見て散策すると、恐らく暗渠とされた道路(黒門川通り)や、昔はお濠だった場所(天神のあたり一帯)が今は繁華街になっていたりと楽しめるポイントが多々あります。
以下は、福岡市県立図書館で公開されている古地図です。
〇 2023/10/8(日)
・この日は、あいにくの雨だったので建物の中で過ごせる様、福岡市博物館へ赴き、国宝の金印の現物を見るのと、サザエさん通り経由で、ももち海岸方面に向かいました。
国宝の金印は、皆さん歴史の教科書で必ず学習する「漢委奴国王」と刻まれた印鑑ですね。
福岡市博物館に現物があるので、確認しに赴きました。
現物見ると、めっちゃ小さいです。
下の写真は、シーサイトももち海浜公園(百道浜)で、渡船場があったり、結婚式場があったります。
左側に能古島がちょっとだけ見えていて、その奥にうっすら金印公園と志賀島が見えています。
下の写真は、福岡タワーで、綺麗だったので写真を撮りました。ちなみに、この道のことを「サザエさん通り」というらしく、
サザエさんの原作者の長谷川町子さんが、この界隈を散歩しながらサザエさんを考案したとかで命名されたらしいです。
〇 2023/10/9(月)
この日は、朝から、大宰府天満宮を訪問しました。
大宰府天満宮は、言わずと知れた、学問の神様「菅原道真」を祀っている社で、元旦になると初詣の中継でTVでよく見かける神社ですね。九州のみならず日本全国から毎年850万人以上の参詣者がある社で、現在は、残念ながら令和の大改修中で、本殿が仮本殿となっていました。
ただ、思った以上に広く、敷地内には遊園地があったり、山の上に稲荷神社があったりと、1日では観光し切れない程、広い。という印象を持ちました。
百人一首で有名な「東風吹かば にほひをこせよ 梅の花」(菅原道真)の石碑があります。
〇 2023/10/10(火)
・急遽残業となってしまい、予定していた観光が出来なくなりました。
(遠目に見た中州)
〇 2023/10/11(水)
・朝10時にホテルをチェックアウトする予定でしたが、オンラインミーティングが長引き、11時までの延長料金を支払い、帰路につきました。
・タイムスケジュール
〇 まとめ
リフレッシュできた部分もあり、残業などで予定していた観光ができなかった部分もありましたが、
実際に福岡を訪問して、肌で空気を感じて、食して、体感することが出来て、かなり充実したワーケーションになりました。1週間、ワーケーションさせて頂いて、見たいものが見れて、知りたかったことが知れるのは、とても楽しい経験になりました。また、食が豊富で、毎食が楽しみでした。
再度、ワーケーション制度を利用できるようになったら、再度、美味しくて歴史と情緒がある街を選択したいと思います。
]]>ここまで継続して来られたのも
私たちSRIAを信頼して仕事を任せていただいた方々のおかげと感謝しております。
今年も7月13日に経営計画発表会を開催しました。
全社員、顧問税理士様にお集まりいただき、
今期の計画と進め方について発表させていただきました。
創業当時のことを思い出しながら、今いるメンバーでできること、
これからしたいことを中心に計画し、そのために今期どうするかをお話ししました。
弊社の経営理念は、
・お客様と”たのしんで”仕事をすることができる会社
・技術者が”たのしんで”仕事をすることができる会社
です。
「楽」という漢字は、”楽しむ”と言う意味と、”楽する”と言う意味があります。
私は、人間の本質は、楽をしたいという、「性”楽”説」と考えています。
楽をしたいために工夫をする生き物だと思ってます。
それを踏まえて、
お客様が楽をするために持っている私たちが技術を使って貢献する。
仲間が楽をするために自分のできることを教え合う。
この循環がうまくできれば、みんなが幸せになれると信じてます。
今一度、こころに留めて進んで参りたいと思いますので
今後ともあたたかい目で見守っていただけますと幸甚です。
今期もどうぞよろしくお願い申し上げます。
株式会社SRIA 代表取締役 野呂 浩一
]]>ホストマシン間の命令セットアーキテクチャーの違いでDockerコンテナが作成できなかったりする問題が発生することがあります。
FROM centos:7.9.2009 RUN yum update -y RUN yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm RUN yum install -y --disablerepo=\* --enablerepo=remi-php74,remi,remi-safe php php-mysqlnd php-devel php-gd php-mbstring php-pdo php-xml php-zip php-pecl-xdebug
... https://mirror.docker.ru/remi/enterprise/7/php74/aarch64/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found Trying other mirror. http://remirepo.reloumirrors.net/enterprise/7/php74/aarch64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found Trying other mirror. https://mirror.dk.team.blue/remi/enterprise/7/php74/aarch64/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found Trying other mirror. http://ftp.arnes.si/mirrors/remi/enterprise/7/php74/aarch64/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found Trying other mirror. https://mirror.netsite.dk/remi/enterprise/7/php74/aarch64/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found Trying other mirror. ...
これらのような問題に対するひとつの解決策は、
Apple SiliconのMacでRosetta 2を使いx86_64アーキテクチャーのイメージを動かすことです。
Rosetta 2とは、AppleがApple Siliconのために開発したx86_64命令からARM64命令への変換器です。
/usr/sbin/softwareupdate --install-rosetta --agree-to-license
次にRosettaをDockerで使えるようにするため、以下のように設定をします (画面はDocker Desktop for Macです) 。
Docker Desktopの設定で、
「Features in development」-> 「Use Rosetta for x86/amd64 exmulation on Apple Silicon」
コマンドではオプションで–platform linux/arm64を指定します。
今回はShopifyのAPI経由で海外の電話番号登録する際の注意点について記載します。
というのも、普段は正常に利用できていたShopifyに電話番号を登録する処理が、ある特定のユーザーが入力した海外の電話番号の場合は、エラーとなったためです。
環境はLaravel(8.x)で ShopifySDK(PHP)を使用しています。
以下のコードは2つのパターンで別の挙動をしました。
use PHPShopify\ShopifySDK; public function shopifyUserCreate(Request $req) { 省略 $customer = array ( "first_name"=> $req->firstName, "last_name"=> $req->lastName, "email"=> $req->email, "phone"=> $req->phone, // 09012345678 or 12345678 "verified_email"=> true, "addresses"=> [ [ "province" => $req->province, "city"=> $req->city, "address1"=> $req->address1 "address2"=> $req->address2, "zip"=> $req->zip" "country"=> "JP" ] ], "password" => $req->passwd, "password_confirmation" => $req->passwd, "send_email_welcome" => false ); $shopify->Customer->post( $customer ); // Shopifyに顧客情報登録 }
Shopifyのドキュメントを見ると「phone」の箇所に以下の記載がありました。
The unique phone number (E.164 format) for this customer. Attempting to assign the same phone number to multiple customers returns an error. The property can be set using different formats, but each format must represent a number that can be dialed from anywhere in the world. The following formats are all valid:
phone properties
- 6135551212
- +16135551212
- (613)555-1212
- +1 613-555-1212
上記4つのどの登録方法でも登録できるみたいでした。
今回は1つ目のパターン(6135551212)での登録を行なっていました。
Shopifyの管理画面を確認するとデフォルトが日本の電話番号として認識される仕組みになっていることが判明しました。
2つ目のパターン(+16135551212)のように国番号を最初に付与した形で登録すれば、デフォルト以外の国の電話番号も登録できることが分かりました。
以下のようにコードを修正すると動作します。
国番号を前に付与して登録するのがポイントです。
日本以外の国の場合は必須となります。
use PHPShopify\ShopifySDK; public function shopifyUserCreate(Request $req) { 省略 $countoryCode = 国番号に変換するメソッド($req->countory); $phone = $countoryCode + $req->phone; $customer = array ( "first_name"=> $req->firstName, "last_name"=> $req->lastName, "email"=> $req->email, "phone"=> $phone, // +8109012345678 or +85212345678 "verified_email"=> true, "addresses"=> [ [ "province" => $req->province, "city"=> $req->city, "address1"=> $req->address1 "address2"=> $req->address2, "zip"=> $req->zip" "country"=> "JP" ] ], "password" => $req->passwd, "password_confirmation" => $req->passwd, "send_email_welcome" => false ); $shopify->Customer->post( $customer ); // Shopifyに顧客情報登録 }
Shopify ロゴ
https://help.shopify.com/ja/partners/getting-started/shopify-branding
Shopify ロゴ利用規約
https://www.shopify.com/brand-assets
]]>
/** * Get the full server command. * * @return array */ protected function serverCommand() { $server = file_exists(base_path('server.php')) ? base_path('server.php') : __DIR__.'/../resources/server.php'; return [ (new PhpExecutableFinder)->find(false), '-S', $this->host().':'.$this->port(), $server, ]; }
決済APIに関する知見を広げるためにカード決済のテスト実装を実施してみました。
StripeとSquareが代表的なのかな。くらいの知識しかなく、決済導入したいとご依頼があった場合にもスムーズに対応できるように普段利用しているLaravelとSquareでカード決済を実装しました。
できる限り最小限のコードのみでカード決済を実装しており、決済API初心者の方でもスムーズに理解しやすい内容となっていると思います。
最初に Square Developper (https://developer.squareup.com/)のアカウントを作成し、ログインします。
アカウント作成時にシステムから聞かれる質問に答えていけば、アプリが既に作られた状態になっているかなと思いますが、作成方法を以下に記載します。
「+」ボタンを押下します。
アプリ名を入力します。
いろいろと聞かれますが、全てスキップで問題ないです。
Skipしていくとアプリの作成が完了し、Credential情報のページに遷移します。
以上でアプリの作成は完了です。
LaravelにはSquare用のSDKが用意されているため、以下を実行してインストールします。
composer require square/square
SDKのGithubURL:https://github.com/square/square-php-sdk
Application ID と Access token をメモしておきます。
次に左メニューの「Location」を押下します。Location ID をメモしておきます。
上記でメモした内容をenvファイルにに反映します。
SQUARE_ENVIRONMENT=sandbox // テスト環境での実施のためsandboxを設定 SQUARE_APPLICATION_ID=[アプリケーションID] SQUARE_ACCESS_TOKEN=[アクセストークン] SQUARE_LOCATION_ID=[ローケーションID]
Laravelにデフォルトで用意されている各種サービス用の設定ファイル(/config/service.php)に以下を追記します。
<?php return [ /* |-------------------------------------------------------------------------- | Third Party Services |-------------------------------------------------------------------------- | | This file is for storing the credentials for third party services such | as Mailgun, Postmark, AWS and more. This file provides the de facto | location for this type of information, allowing packages to have | a conventional file to locate the various service credentials. | */ 'square' => [ 'env' => env('SQUARE_ENVIRONMENT'), 'application_id' => env('SQUARE_APPLICATION_ID'), 'token' => env('SQUARE_ACCESS_TOKEN'), 'location_id' => env('SQUARE_LOCATION_ID'), ], ];
routes/web.phpに以下を設定します。
Route::get('/square', function () { return view('square'); });
resources/views/square.blade.phpに以下を記述します。
カード情報入力用のボックスを用意し、支払いボタン押下時にバックエンドで作成する決済APIを実行しています。
<!DOCTYPE html> <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>LaravelとSquareで決済実装(最小限のコード)</title> <meta name="csrf-token" content="{{ csrf_token() }}"> <script src="https://code.jquery.com/jquery-3.3.1.js"></script> <script type="text/javascript" src="https://sandbox.web.squarecdn.com/v1/square.js" ></script> <script> const applicationId = "{{ config('services.square.application_id') }}"; const locationId = "{{ config('services.square.location_id') }}"; async function cardInit(payments) { try { const card = await payments.card(); await card.attach('#cardBox'); return card; } catch (e) { alert(e); } } async function getToken(paymentMethod) { const result = await paymentMethod.tokenize(); if (result.status === 'OK') { return result.token; } else { alert(result.errors); } } async function createPayment(token) { $.ajax({ type: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, url: '/api/v1/square/payment', data: JSON.stringify({ locationId, sourceId: token, }), dataType : "json" }).done(function(result){ alert( '決済ID:' + result.payment.id + ' 支払い額:' + result.payment.amount_money.amount + '円' ); }) } $(window).on('load', async function () { const payments = window.Square.payments(applicationId, locationId); const card = await cardInit(payments); $('#button').on('click', async function (event) { const token = await getToken(card); await createPayment(token); }); }); </script> </head> <body> <form> <h1>入会費:2500円</h1> <div id="cardBox"></div> <button id="button" type="button">支払う</button> </form> </body> </html>
ここまで実装した時点で/squareにアクセスすると以下の画面が表示されるはずです。
/routes/api.phpに以下を設定します。
use App\Http\Controllers\Square\SquareController; Route::post('/v1/square/payment', [SquareController::class, 'createPayment'])->name('square.createPayment');
/app/Http/Controllers/Square/SquareController.phpに以下を記述します。
金額等を設定してSDKの利用により、決済APIを実行しています。
<?php namespace App\Http\Controllers\Square; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use Illuminate\Support\Str; use Square\SquareClient; class SquareController extends Controller { public function __construct() { $this->client = new SquareClient([ 'accessToken' => config('services.square.token'), 'environment' => config('services.square.env'), ]); } public function createPayment(Request $req) { try { $data = $req->all(); $amountMoney = new \Square\Models\Money(); $amountMoney->setAmount(2500); $amountMoney->setCurrency('JPY'); $body = new \Square\Models\CreatePaymentRequest( $data['sourceId'], Str::uuid()->toString(), ); $body->setAmountMoney($amountMoney); $res = $this->client->getPaymentsApi()->createPayment($body); if ($res->isSuccess()) { return response()->json($res->getResult()); } else { throw new \Exception(); } } catch (\Exception $e) { throw new \Exception($e->getMessage()); } } }
/squareにアクセスします。
カード番号等を入力して支払うボタンを押下します。
支払いが完了するとアラートで決済IDと支払額が表示されます。これで決済完了です。
Squareの管理画面にて決済が反映されているか確認します。「Sandbox test accounts」の「Open」を押下します。
先ほど実施した決済が反映されています。
どんな方法で支払ったかなどの内訳も見れるそうです。
]]>
今回はGithub Copilotを利用してみました。
Github Copilotの画面(https://github.com/settings/copilot)にアクセスし、「Start Free Trial」を押下するとプランを選択できます。
プラン選択後、「Get access to GitHub Copilot」を押下します。
支払い情報を入力して「Save」を押下します。
以上でアカウントの設定は完了です。
Visual Studio Code にて拡張機能 Github Copilot をインストールします。
※ GitHub アカウントで Visual Studio Code を承認していない場合は、Visual Studio Code で GitHub にサインインするように求められます。
以上で導入完了です。
jsで試してみました。
日本時間をアメリカ時間に変更するメソッドを書きたいとコメントで指示を出すと、候補のコードが表示されます。Tabキー押下で受け入れることができます。
ちなみに、指示のコメントは日本語よりも英語の方が良い結果が返ってくる印象でした。
受け入れ後、Enterキー押下でさらに候補が表示されます。Tabキー押下で受け入れます。
コメントとTabキー、Enterキーのみでメソッド完成です。
Laravelで試してみました。
日本時間をアメリカ時間に変更するメソッドを作成します。
コメントで上記で作成したメソッドについてテストを作成するように指示を出しています。
いい感じの候補が表示されました。
このような簡易なメソッドであれば問題ないですが、複雑なメソッドでは上手くテストコードの候補が表示されませんでした。上手くCopilotを利用するにはテストコードの書きやすいメソッド設計が重要なのかとも感じました。
Githubのページ(https://github.com/features/copilot/)に以下の記載がありました。
Will my code be shared with other users?
No. We follow responsible practices in accordance with our Privacy Statement to ensure that neither your Prompts or Suggestions will be shared or used as suggested code for other users of GitHub Copilot.
設定は必要ですが、外部に流出する恐れはないようです。
Githubのページ(https://github.com/features/copilot/)に以下の記載がありました。
What if I’m accused of copyright infringement based on using a GitHub Copilot suggestion?
GitHub will defend you as provided in the GitHub Copilot Product Specific Terms.
規約には以下のような記載がありました。
3. Responsibility for Your Code.
You retain all responsibility for Your Code, including Suggestions you include in Your Code or reference to develop
Your Code. It is entirely your decision whether to use Suggestions generated by GitHub Copilot. If you use
Suggestions, GitHub strongly recommends that you have reasonable policies and practices in place designed to
prevent the use of a Suggestion in a way that may violate the rights of others. This includes, but is not limited to,
using all filtering features available in GitHub Copilot.
あくまで自己責任であるため、まるまるコピーはしないようにするのが最善です。
上記の不安点を防ぐために、設定画面にて以下の2つを設定します。
これまで動作実績のある古いバージョンの処理系を使うといったこともあり得ます。
今回はAmazon Linux 2023のDockerベースイメージにPHP7.3.31をインストールする方法を紹介します。
(phpenvも選択肢としてありますが、内部的にはソースからビルドしていて
ソースコードからビルドする方法とカブるので今回は検討から除外します。)
sh-5.2# yum --showduplicate list php* Last metadata expiration check: 0:02:08 ago on Thu Jun 15 15:30:55 2023. Available Packages php-pear.noarch 1:1.10.13-2.amzn2023.0.4 amazonlinux php8.1.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-bcmath.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-bcmath.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-cli.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-cli.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-common.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-common.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-dba.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-dba.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-dbg.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-dbg.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-devel.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-devel.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-embedded.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-embedded.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-enchant.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-enchant.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-ffi.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-ffi.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-fpm.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-fpm.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-gd.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-gd.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-gmp.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-gmp.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-intl.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-intl.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-ldap.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-ldap.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-mbstring.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-mbstring.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-mysqlnd.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-mysqlnd.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-odbc.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-odbc.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-opcache.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-opcache.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-pdo.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-pdo.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-pgsql.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-pgsql.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-process.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-process.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-soap.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-soap.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-tidy.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-tidy.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux php8.1-xml.x86_64 8.1.14-1.amzn2023.0.2 amazonlinux php8.1-xml.x86_64 8.1.16-1.amzn2023.0.1 amazonlinux
どうやらリポジトリにあるバージョン以外のPHPは使えないようです。
(2023年6月15日時点)
sh-5.2# dnf install https://rpms.remirepo.net/fedora/remi-release-38.rpm Last metadata expiration check: 0:17:23 ago on Tue Jun 13 13:20:51 2023. remi-release-38.rpm 27 kB/s | 28 kB 00:01 Error: Problem: conflicting requests - nothing provides fedora-release >= 38 needed by remi-release-38-2.fc38.remi.noarch (try to add '--skip-broken' to skip uninstallable packages)
FROM amazonlinux:2023 RUN yum update -y RUN yum install -y tar gzip make gcc libxml2-devel bzip2-devel curl-devel readline-devel libxslt-devel WORKDIR /root RUN curl https://www.php.net/distributions/php-7.3.31.tar.gz -o php-7.3.31.tar.gz RUN tar -xzvf php-7.3.31.tar.gz WORKDIR /root/php-7.3.31 RUN ./configure --with-bz2 --enable-calendar --with-curl --enable-exif --enable-ftp --with-gettext --enable-mbstring --with-mysqli --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-pcntl --with-pdo-mysql --disable-posix --with-readline --enable-sockets --enable-wddx --with-xmlrpc --with-xsl --with-zlib RUN make install
FROM amazonlinux:2023 RUN yum update -y RUN yum install -y tar gzip make gcc libxml2-devel bzip2-devel curl-devel readline-devel libxslt-devel openssl-devel WORKDIR /root RUN curl https://www.php.net/distributions/php-7.3.31.tar.gz -o php-7.3.31.tar.gz RUN tar -xzvf php-7.3.31.tar.gz WORKDIR /root/php-7.3.31 RUN ./configure --with-bz2 --enable-calendar --with-curl --enable-exif --enable-ftp --with-gettext --enable-mbstring --with-mysqli --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --enable-pcntl --with-pdo-mysql --disable-posix --with-readline --enable-sockets --enable-wddx --with-xmlrpc --with-xsl --with-zlib RUN make install
In file included from /root/php-7.3.31/main/php.h:468, from /root/php-7.3.31/ext/openssl/openssl.c:28: /root/php-7.3.31/ext/openssl/openssl.c: In function 'zm_startup_openssl': /root/php-7.3.31/ext/openssl/openssl.c:1491:58: error: 'RSA_SSLV23_PADDING' undeclared (first use in this function); did you mean 'RSA_NO_PADDING'? 1491 | REGISTER_LONG_CONSTANT("OPENSSL_SSLV23_PADDING", RSA_SSLV23_PADDING, CONST_CS|CONST_PERSISTENT); | ^~~~~~~~~~~~~~~~~~ /root/php-7.3.31/Zend/zend_constants.h:53:105: note: in definition of macro 'REGISTER_LONG_CONSTANT' (中略) make: *** [Makefile:639: ext/openssl/openssl.lo] Error 1
FROM amazonlinux:2023 RUN yum update -y RUN yum install -y tar gzip wget make gcc libxml2-devel bzip2-devel curl-devel readline-devel libxslt-devel perl WORKDIR /root RUN wget https://www.openssl.org/source/openssl-1.1.1u.tar.gz RUN tar -xzvf ./openssl-1.1.1u.tar.gz WORKDIR /root/openssl-1.1.1u RUN mkdir -p /root/lib/openssl RUN ./config --prefix=/root/lib/openssl RUN make RUN make install WORKDIR /root RUN curl https://www.php.net/distributions/php-7.3.31.tar.gz -o php-7.3.31.tar.gz RUN tar -xzvf php-7.3.31.tar.gz WORKDIR /root/php-7.3.31 RUN ./configure --with-bz2 --enable-calendar --with-curl --enable-exif --enable-ftp --with-gettext --enable-mbstring --with-mysqli --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl=/root/lib/openssl --enable-pcntl --with-pdo-mysql --disable-posix --with-readline --enable-sockets --enable-wddx --with-xmlrpc --with-xsl --with-zlib RUN make install
checking for Apache 2.0 handler-module support via DSO through APXS... Sorry, I cannot run apxs. Possible reasons follow: 1. Perl is not installed 2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs 3. Apache was not built using --enable-so (the apxs usage page is displayed) The output of apxs follows: ./configure: line 6311: apxs: command not found configure: error: Aborting
FROM amazonlinux:2023 RUN yum update -y RUN yum install -y tar gzip httpd wget make gcc libxml2-devel bzip2-devel curl-devel readline-devel libxslt-devel php-devel apr-devel apr-util-devel WORKDIR /root RUN wget https://dlcdn.apache.org/httpd/httpd-2.4.57.tar.gz RUN tar -xzvf ./httpd-2.4.57.tar.gz WORKDIR /root/httpd-2.4.57 RUN ./configure --enable-so RUN make RUN make install WORKDIR /root RUN curl https://www.php.net/distributions/php-7.3.31.tar.gz -o php-7.3.31.tar.gz RUN tar -xzvf php-7.3.31.tar.gz WORKDIR /root/php-7.3.31 RUN ./configure --with-bz2 --enable-calendar --with-curl --enable-exif --enable-ftp --with-gettext --enable-mbstring --with-mysqli --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-pcntl --with-pdo-mysql --disable-posix --with-readline --enable-sockets --enable-wddx --with-xmlrpc --with-xsl --with-zlib --with-apxs2=/usr/local/apache2/bin/apxs RUN make install RUN cp /root/php-7.3.31/libs/libphp7.so /etc/httpd/modules/ RUN cp /root/httpd-2.4.57/modules/ssl/.libs/mod_ssl.so /etc/httpd/modules/
2023年5月8日(月)より平常通りの営業となります。
なお、上記期間のお電話及びメールによるお問い合わせにつきましては、
2023年5月8日(月)より順次ご対応させて頂きます。
ご不便をお掛けしますが、何卒ご了承くださいますよう宜しくお願い申し上げます。
]]>