2021年11月30日
とあるライブラリーがPHP7.1~7.4でうまく動かない現象に出くわしたので調べてみました。
どういう状況かというと、SJIS-win(CP932)にエンコードした文字列をmb_split関数に渡して配列に変換する際に
PHP5.3 → うまく配列に変換できる。
PHP7.3 → falseが返ってきてうまく行かない。
PHP8.0 → うまく配列に変換できる。
という事が起こりました。

mb_split関数はマニュアルによると
https://www.php.net/manual/ja/function.mb-split.php
注意:
書いた人:木本
2021年06月02日
PHPを動かしているサーバーから別にサーバーにSSHで接続してなんやかんやの操作を行いたいことがあったのでいろいろと調べた。
PHPには公式でSSH2というPECL拡張モジュール(https://www.php.net/manual/ja/book.ssh2.php)があるが、インストールが少々面倒。
なので他にいい方法が無いか探してみるとphpseclibというライブラリーが公開されていたので、これを使うことにした。

■phpseclib
https://github.com/phpseclib/phpseclib
■サンプルコード
http://phpseclib.sourceforge.net/new/ssh/examples.html
今回はお試しとして
・SSH2でログインする。
書いた人:木本
2020年09月01日
前回の続き

1番目の記事で書いたケース2(PHP7.3)のimagecreatefromjpeg関数で破損した画像を開いた際にfalseを返してくるはずが、
なぜかリソースIDを返してくる件を確認するためにテスト用のプログラムを用意した。

まずは壊れた画像ファイルの用意から。
今回はお手軽に画像ファイルの先頭30,000バイトを抜き出して壊れた画像ファイルを作成することにした。


PHPコード
書いた人:木本
2020年08月31日
前回の続き

残りは各OSの標準バージョン環境の作成。
それぞれOSが異なるのでOSごとにマシンを用意していく。
特に何の設定もなくyumで入れれるのでどんどん入れていく。
CentOS6標準環境の作成
PHP5.3
yum -y install php php-gd

php -v
書いた人:木本
2020年08月28日
前回の続き
CentOS8 AppStreamリポジトリ環境の作成
AppStreamリポジトリも場合は複数バージョンの共存ができないので、都度インストール&アンインストールを行う。
また、AppStreamリポジトリはCentOS8用のものなので、CentOS8を用意して確認した。

dnf module list php
Last metadata expiration check: 0:01:20 ago on Wed 26 Aug 2020 10:19:36 AM UTC.
CentOS-8 - AppStream
Name Stream Profiles Summary
php 7.2 [d][e] common [d], devel, minimal PHP scripting language
書いた人:木本
2020年08月27日
前回の続き
Amazon Linux 2 amazon-linux-extrasリポジトリ環境の作成
amazon-linux-extrasリポジトリも場合は複数バージョンの共存ができないので、都度インストール&アンインストールを行う。
PHP.7.2
amazon-linux-extras enable php7.2
yum clean metadata
yum -y install php php-gd

php -v
PHP 7.2.31 (cli) (built: Jul 2 2020 23:17:00) ( NTS )
書いた人:木本
2020年08月24日
前回の続き
iusリポジトリ環境の作成
iusリポジトリの場合は複数バージョンが共存できないので、都度インストール&アンインストールを行う。

公式( https://ius.io/setup )の手順に従う。

yum install \
  https://repo.ius.io/ius-release-el7.rpm \
  https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

書いた人:木本
2020年08月21日
前回の続き
remiリポジトリ環境の作成
remiリポジトリから入れる場合は複数バージョン共存可能なので、どんどん入れていく。

amazon-linux-extras enable epel
yum clean metadata
yum install -y epel-release
rpm -Uvh https://rpms.remirepo.net/enterprise/remi-release-7.rpm
PHP5.4
yum install --enablerepo remi -y php54 php54-gd
書いた人:木本
2020年08月20日
PHPをインストールする際に
・OS標準のリポジトリから入れる場合
・ソースをコンパイルして入れる場合
・remi等の外部リポジトリから入れる場合
という方法が考えられるが、入れ方によってPHP GDがbundled版になるかどうかが変わってしまう。
挙動に影響が無ければ別にいいのだが、どうもそうはいかないみたいなので確認した結果を記録しておく。

そもそもなぜこんなことを調べたのかというと、開発環境と本番環境でPHPのバージョンが同じなのに本番環境でだけ想定通りに動かないということが起こったから。
具体的に書くと
ケース1(PHP5.6)
書いた人:木本
2018年09月19日
Part2からの続き。
Part1はコチラ。
最後の仕上げでFront Apacheから各PHPバージョン用のApacheへアクセスできるようにリバースプロキシの設定を行う。
以下のような割り当てを行う。



URL
PHPバージョン

書いた人:木本
2018年09月18日
だいぶ放置してしまったが、Part1からの続き。
今回はPHPのインストールを行う。
・PHP5.3
・PHP5.6
・PHP7.1
をソースからコンパイルし、それぞれ用のApacheに読み込ませていく。

1. 各バージョンのPHPのダウンロード先を調べる。
http://php.net/downloads.php
にアクセスし、バージョンごとのダウンロードURLを調べる。
書いた人:木本
2017年08月18日 コメント数:8
1台のWEBサーバーで複数バージョンのPHPを使う方法を調べたのでメモする。

phpenv + php-build + PHP-FPM という構成でPHPをCGI版で動かすこともできるらしいが、
今回はApacheを複数台用意することにした。

■環境
・Amazon Linux
・Apache 2.2
・PHP5.3
・PHP5.6
書いた人:木本
2017年06月30日
インスタンスを作成したらもろもろの初期設定をする。
Apache、PHP、MySQLをセットアップする場合。
※随時改定する。
1. rootに成り上がる。
sudo打つのが面倒なので、rootに成り上がる。
2. アップデートを掛ける。
yum -y update
3. Apacheをインストールする。
yum -y install httpd
service httpd start
書いた人:木本
2017年06月02日
PHPに限らない話だが、デバッグ中やテスト中などにエラーメッセージが出た場合は漏らさずチェックしたいものである。

しかし、php.iniで「display_errors = On」と設定し、注意深く画面を見ていたとしても気づかないことは多々ある。

・ヘッダーの裏に文字が出ていたので見えなかった。
 エラーメッセージの分だけ全体的にコンテンツ部分が下にずれていたりするが、急いで操作していると気づかない。

・jQueryDialogなどのダイアログを閉じる瞬間に警告メッセージが表示され、見逃してしまう。
 submit結果のHTMLをdialog内に流し込んでいたりすると、ダイアログを閉じるJavascriptと共に警告メッセージがダイアログ内に流し込まれ、
 次の瞬間にはダイアログが閉じてしまう。
書いた人:木本
Top