DIOをPHP5.4.0に適応させる

■先日リリースされたPHP5.4.0。文法周りに手が入ったり、safe_modeのような古い、ルーズな設定を排除した新しいバージョン。ただ、コアに手が入った関係で、幾つかのPECLモジュールでコンパイルできないものがあった。DIO(ダイレクトI/O)がそれで、safe_modeを意識したコーディング部分が軒並み文法エラーで通らなくなっている。DIOはXBeeを使った家電制御アプリで欠かせないモジュールで、これが使えないのではPHP5.4.0も使えない。とはいえ、DIOの正式リリースがいつ出るのかは不明。自分で何とかしてみましょうか。

 コンパイルエラーが出るのは以下の2ソース。
dio.c
dio_stream_wrappers.c
dio.cはPG(safe_mode)というマクロで、safe_modeフラグがオンの時の判定処理がエラーになる。dio_stream_wrappers.cも似ていて、safe_modeフラグ判定部分がエラーになる。いずれもsafe_modeを格納する領域がPHP5.4.0で削除されたため。

dio.cは以下の部分で、'PG(safe_mode)'を含む論理節を丸ごと削除した。CHECKUID_CHECK_MODE_PARAMはsafe_modeのことなので、後半のphp_checkuidも不要と判断した。

99c99
< if (php_check_open_basedir(file_name TSRMLS_CC) || (PG(safe_mode) && !php_checkuid(file_name, "wb+", CHECKUID_CHECK_MODE_PARAM))) {
---
> if (php_check_open_basedir(file_name TSRMLS_CC) ) {

dio_stream_wreppers.cも同様で、ただし、変更箇所は複数に分かれている。

146,214c212 / 213,214c212 / 310,311c308 / 377,378c374
< if (php_check_open_basedir(filename TSRMLS_CC) ||
< (PG(safe_mode) && !php_checkuid(filename, mode, CHECKUID_CHECK_MODE_PARAM))) {
---
> if (php_check_open_basedir(filename TSRMLS_CC) ){

 とりあえずコンパイルは通る。動作確認はこれから。実際にUSB/FTDIデバイスを使って通信できることを確認する必要があるので、テスト方法をちょっと思案中。

Copyright (C) 2008-2015 Satosh Saitou. All rights reserved.
戻る
日記::一覧展開
2016.06
2016.05
2015.12
2015.11
2015.08
2015.07
2015.06
2015.05
2015.04
2015.03
2015.02
2015.01
2014.12
2014.11
2014.10
ケース加工 (2014.10.11)
2014.09
RaspberryPi B+ (2014.09.06)
2014.08
2014.07
SDカード再び (2014.07.05)
2014.06
2014.05
2014.04
2014.03
2014.02
2014.01
2013.12
2013.11
2013.10
2013.09
ヒステリシス (2013.09.28)
2013.08
2013.07
2013.06
2013.05
2013.04
箱詰め終わる (2013.04.13)
2013.03
XBeeで接続する (2013.03.10)
2013.02
音と光 (2013.02.03)
2013.01
2012.12
外装に収める (2012.12.23)
2012.11
2012.10
MPL1151A1 (2012.10.07)
2012.09
2012.08
2012.07
2012.06
2012.05
DHT11 (2012.05.12)
2012.04
PHPでIPCを行う (2012.04.22)
DHCPを立てる (2012.04.14)
DNSを立てる (2012.04.08)
2012.03
IPv6を追加する (2012.03.17)
MTUを調整する (2012.03.11)
2012.02
2012.01
2011.12
2011.11
アサーション (2011.11.20)
XB24-BとXB24-ZB (2011.11.06)
2011.10
家電入れ替え (2011.10.23)
2011.09
湿度センサ (2011.09.25)
2011.08
2011.07
2011.06
2011.05
2011.04
2011.03
2011.02
2011.01
2010.12
PWMで赤外線 (2010.12.26)
2010.11
2010.10
2010.09
音を鳴らす (2010.09.12)
2010.08
2010.07
2010.06
2010.05
2010.04
2010.03
2010.02
2010.01
2009.12
2009.11
2009.10
2009.09
2009.08
2009.07
2009.06
2009.05
2009.03
2009.02
2009.01
2008.12
AVR HTTPサーバ (2008.12.20)
2008.11
2008.10
2008.09
2008.08
ICMP Echo応答 (2008.08.16)
MACフレーム (2008.08.03)
2008.07
2008.06
2008.05
SDカード再び (2008.05.11)
GPSロケーター (2008.05.04)
2008.04
2008.03
音が小さい (2008.03.30)
2008.02
1998.11
作成:2012.03.11
公開:2012.03.31

Valid XHTML 1.1

loading image reserved place