PHPソースファイルの文字列置換をしてから、
PHPソースファイルの文字列置換をしてから、
そのスクリプトを実行する方法を実行しようとしている
のですが、うまくいきません。
似たような質問(http://oshiete.nikkeibp.co.jp/qa5496696.html)
を参考にして、文字列置換自体はうまくいったのですが、
phpファイル実行時にまったく関係の無いはずの
DBアクセスでエラーが発生してしまいました。
変換前前のphpファイルに置換後の文字列を手で入れて、
データベース実行するとうまくいきます。
しかしながら、phpファイルの文字列置換をstr_replaceで実行し、別名保存した後
includeしても、うまくいかないといった状況です。
ちなみに置換後のphpファイル内で
$置換後文字列 = "test";
echo $置換前文字列;
とすると、置換前文字列が置換後文字列に
きちんと変わっているようで、
"test"と出力されます。
もしかすると、原因は違う所に潜んでいるのかもしれませんが、
どこを調べれば良いのか検討がつかず困っております。
どなたか解決手段の分かる方がいらっしゃれば教えて頂けませんでしょうか?
--------------------------------------------------------------
尚、ファイル構成は
top
|-change (1.php)
|-database (2.php)
|-search (検索画面[データベース検索の入り口。form action ="./3.php"],3.php)
|-base (4.php,5.php[tempファイル])
となっており、
それぞれの中身は
1.文字列置換実行用のphpファイル(1.php):
1-1.file_get_contentsで4のphpファイルを取得
1-2.str_replaceを用いて文字列置換
1-3.文字列置換したファイルをfwriteで4.phpと同じディレクトリに保存(5.php)
1-4.5.phpをincludeする。
1-5.5.phpをunlinkする。
2.データベースアクセス(mysql)用関数を含むphpファイル(2.php):
↓エラーの原因と思われる関数
function connect() {
global $host,$user_id,$passwd,$con;
$con = mysql_connect($host,$user_id,$passwd);
}
置換前phpファイルを手動で文字列置換した場合には
同ファイル内で設定したglobal変数の値がきちんと格納されており、
データベース実行がうまくいきます。
置換後phpファイルでは$host等に値が格納されていないため、
データベース実行がうまくいきません。
グローバル変数の中身は同ファイル内で定義しています。
3.検索を実行した時に呼び出されるphpファイル(3.php):
3-1.include("../change/1.php");
3-2.1.phpの関数の実行
4.文字列置換前のphpファイル(4.php):
/*呼び出し元のディレクトリ位置でないとincludeに失敗する*/
4-1.include("../database/2.php");
4-2.2.phpのデータベースアクセス関数を実行する。
5.文字列置換後のphpファイル(5.php):
3-2の1.php関数の実行により、一時的に生成される。
お礼
ご回答ありがとうございます。 どうやらPHPで私がやりたいことができるようですね。 充実したマニュアルもあるようなので、 勉強してみたいと思います。 ありがとうございました。