タグ: PHP

  • Ubuntuコンテナにおける利用可能なPHPの version について

    Ubuntuコンテナにおける利用可能なPHPの version について

    背景

    PHPは広く使用されているオープンソースの汎用スクリプト言語で、特にWeb開発に適しています。Dockerコンテナ内で異なるバージョンのPHPが利用できるかどうかは、開発やデプロイのプロセスに大きな影響を与える可能性があります。

    最近、異なるUbuntuコンテナでインストール可能なPHPのバージョンを深く掘り下げる必要がある状況に遭遇しました。

    発見プロセス

    当初、ubuntu:18.04ベースのDockerコンテナにPHPバージョン7.3以上をインストールしようとしました。ppa:ondrej/php を追加しても、7.2以上のバージョンのPHPをインストールすることができませんでした。

    私のプロジェクトの多くは、様々な依存関係やそれ以降のPHPバージョンで導入された機能により、少なくともPHP 7.3が必要だったため、この制限は大きな課題となりました。

    Ubuntu 18.04での実験

    ubuntu:18.04コンテナを使い、以下のコマンドを活用してPHP 7.3と8.0のインストールを試みました

    sudo add-apt-repository ppa:ondrej/php
    sudo apt-get update
    sudo apt-get install php7.3

    以下の様なエラーになりました

    E: Unable to locate package php7.3
    E: Couldn't find any package by glob 'php7.3'
    E: Couldn't find any package by regex 'php7.3'

    Ubuntu 20.04への乗り換え

    ubuntu:18.04で直面した課題に促され、Dockerコンテナをubuntu:20.04に切り替えることにしました。

    同じ手順を適用したところ、PHPバージョン7.3、7.4、そしてPHP 8.0まで問題なくインストールできました。

    分析

    このことにより、ベースイメージが利用可能なPHP の version に影響することが明確になりました。Ubuntu 18.04は古いLTSリリースであるため、時には複雑な設定を追加しなければ、7.2以上のPHPバージョンをネイティブにサポートしていません。

    対照的に、最新のLTSバージョンであるUbuntu 20.04は、ソフトウェアの互換性と可用性の進歩を反映して、新しいPHPバージョンをすぐにサポートしています。

    結論

    Docker環境でPHPを扱う開発者やDevOpsエンジニアにとって、ベースコンテナイメージとソフトウェアパッケージの可用性の関係を理解することは非常に重要です。

    PHPのバージョン7.3以降を使用する予定であれば、ubuntu:20.04コンテナを選択するのが、より簡単で効率的な選択かと思います。

    推奨事項

    • プロジェクトのセットアップを開始する前に、選択したUbuntuコンテナのバージョンとのPHPバージョンの互換性を必ず確認してください。
    • 新しいPHPバージョンのサポートが必要な場合は、Dockerコンテナを新しいUbuntuバージョンにアップグレードすることを検討してください。
    • UbuntuのリリースでサポートされているPHPのバージョンについて常に情報を入手し、スムーズな開発とデプロイを行いましょう。

  • Understanding PHP Version Availability in Ubuntu Containers

    Understanding PHP Version Availability in Ubuntu Containers

    Introduction

    When working with Docker containers based on Ubuntu, one might encounter limitations regarding the availability of PHP versions. This blog post explores these limitations, specifically between Ubuntu 18.04 and Ubuntu 20.04 containers, and provides insights into how you can successfully manage PHP installations within these environments.

    Background

    PHP is a widely-used open-source general-purpose scripting language that is especially suited for web development. The availability of different PHP versions in Docker containers can significantly affect your development and deployment processes. Recently, I encountered a situation that necessitated a deeper dive into which PHP versions are installable on different Ubuntu containers.

    The Discovery Process

    Initially, I attempted to install PHP versions 7.3 and above in a Docker container based on ubuntu:18.04. Despite my efforts and even after adding the popular Ondřej Surý PPA, I was unable to install PHP versions higher than 7.2. This limitation posed a significant challenge, as many of my projects required at least PHP 7.3 due to various dependencies and features introduced in later PHP versions.

    Experimenting with Ubuntu 18.04

    Using the ubuntu:18.04 container, I attempted to install PHP 7.3 and 8.0 by leveraging the following commands:

    sudo add-apt-repository ppa:ondrej/php
    sudo apt-get update
    sudo apt-get install php7.3

    However, I encountered the following issue:

    E: Unable to locate package php7.3
    E: Couldn't find any package by glob 'php7.3'
    E: Couldn't find any package by regex 'php7.3'

    Switching to Ubuntu 20.04

    Prompted by the challenges faced with ubuntu:18.04, I decided to switch my Docker container to ubuntu:20.04. After applying the same steps, I was pleasantly surprised to find that I could successfully install PHP versions 7.3, 7.4, and even PHP 8.0 without any issues.

    Analysis

    This experience highlighted a crucial aspect of working with Docker and Ubuntu containers – the base image significantly impacts the availability of software packages. Ubuntu 18.04, being an older LTS release, does not natively support PHP versions higher than 7.2 without additional, sometimes complex, configurations. In contrast, Ubuntu 20.04, a more recent LTS version, has out-of-the-box support for newer PHP versions, reflecting the advancements in software compatibility and availability.

    Conclusion

    For developers and DevOps engineers working with PHP in Docker environments, understanding the relationship between the base container image and software package availability is crucial. If you’re planning to use PHP versions 7.3 or newer, opting for an ubuntu:20.04 container would be the more straightforward and efficient choice.

    This exploration not only solved my immediate problem but also served as a valuable reminder of the importance of keeping both software and knowledge up to date. I hope sharing this experience helps others navigate similar challenges in their development workflows.

    Recommendations

    • Always check the PHP version compatibility with your chosen Ubuntu container version before starting your project setup.
    • Consider upgrading your Docker container to a newer Ubuntu version if you require support for newer PHP versions.
    • Stay informed about the PHP versions supported by Ubuntu releases to ensure smooth development and deployment processes.
  • laravelでrouteの一覧を表示する

    laravelでrouteの一覧を表示する

    はじめに

    Laravelでルーティングを全て表示する方法を紹介します。

    ルーティング設定の方法

    Laravelでは、有効なメソッドとURLを表示するために、以下のphp artisan route:listコマンドを利用します。

    php artisan route:list
    このコマンドを実行すると、以下のようなルーティング一覧が表示されます。
    +--------+----------+--------------+------+--------------------------------------------+--------------+
    | Domain | Method   | URI          | Name | Action                                     | Middleware   |
    +--------+----------+--------------+------+--------------------------------------------+--------------+
    |        | GET|HEAD | /            |      | App\Http\Controllers\PostsController@index | web          |
    |        | GET|HEAD | api/user     |      | Closure                                    | api,auth:api |
    |        | GET|HEAD | posts/back   |      | App\Http\Controllers\PostsController@back  | web          |
    |        | GET|HEAD | posts/{post} |      | App\Http\Controllers\PostsController@show  | web          |
    +--------+----------+--------------+------+--------------------------------------------+--------------+

    ルーティング設定の方法

    <?php
    Route::get('/', 'PostsController@index');
    // 数字のみを受け付けるルート設定
    Route::get('/posts/{post}', 'PostsController@show')->where('post','[0-9]+');
    // 記事のタイトルを受け付けるルート設定
    Route::get('/posts/{slug}', 'Posts

    laravel の実践向け書籍