質問: 以前phpで開発したシステムをlamppに移行しようとしているのですが、 phpのバージョンが新しいもので Warning (2): mysql_real_escape_string() [function.mysql-real-escape-string]: そのようなファイルやディレクトリはありません といったエラーが出て正常動作しません。 phpの古いバージョンでサポートされていて、最新ではサポートされない機能を 結構使っているようです。 全機能をチェックして移行はとりあえず今はできないので、PHP 5.5相当で動かすには どうすればよいでしょう? 昔のlamppでも入手するのがよいでしょうか? どこで入手できるでしょう? z それとも何か互換モードのようなものがあって、旧仕様で動かすことはできないでしょうか? lamppのphpはPHP 5.6.32で、このphpが動作して上記のようなエラーになっているのでしょうが、OS(centOS)上にはPHP 5.4.16 が入っています。 lamppのapacheで使用するphpを5.4.16の方に切り替えて使用するといったことはできないでしょうか? また、環境は複数あってmacosではphp 5.6.21で正常動作しているのですが、centosでは 上記の通り5.6.32で Warning (2): mysql_real_escape_string() [function.mysql-real-escape-string]: そのようなファイルやディレクトリはありません というエラーが出ています。 phpのバージョンの問題とも限らないでしょうか? centos上でlamppのphpバージョン確認 [root@localhost bin]# pwd /opt/lampp/bin [root@localhost bin]# php -v PHP 5.4.16 (cli) (built: Nov 15 2017 16:33:54) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies macos上でlamppのphpバージョン確認 SanPedro:XAMPP apple$ pwd /Applications/XAMPP SanPedro:XAMPP apple$ bin/php -v PHP 5.6.21 (cli) (built: May 12 2016 03:39:40) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
回答: わかっていることを整理しようと思います。 1.mysql_real_escape_stringはmysql_connect()と合わせ使用を前提としている。 2.私のAPは、Centos5.8やWindows7のPHP5.8のかnConnectionManager::getDataSource とmysql_real_escape_stringで使用して正常動作していた。 centos5.8の環境は現在もあり、正常動作している。(Windows環境はすでにない) 3.CentOS7.4 PHP 5.4.16 では2.のAPは Warning (2): mysql_real_escape_string() [function.mysql-real-escape-string]: そのようなファイルやディレクトリはありません というエラーが出て、また受け取り側にはデータが渡らず結果はNGとなる。 しかし、 MacOS 10.13.2 PHP 5.6.21ではエラーメッセージも出ず、動作も正常である。 合点が行かない部分もありますが、 結論としてCentOS7.4 PHP 5.4.16 などで使いたいなら、プログラム修正するしかないということだと思います。