何度やっても起こるのでメモしました・・・・
PHP Version 5.3.3-7 で確認しました。
function 内 global 変数を fopen の第一引数にするとき
バグが起こります。
---------------
インクルードするファイル ---------------
A.php として以下
<?php
$dir_img = 'images/';
);
?>
上は、OKな例、NGな例、全てに使っています。
-------------------------------------------------------------------------------------------------------------------------------
---------------- ①
OKな例 ----------------
B.php として以下
<?php
include 'a.php';
test();
imageName ='image';
function test(){
//~~~ 略 ~~~
$imageRP = fopen ( strval( $dir_img . $imageName ), "w" );
fwrite ( $imageRP, 'testtest' );
fclose ( $imageRP );
}
?>
---------------- ②
OKな例 ----------------
B.php として以下
<?php
include 'a.php';
test();
imageName ='image';
function test(){
//~~~ 略 ~~~
$imageRP = fopen ( strval( $dir_img ) . $imageName, "w" );
fwrite ( $imageRP, 'testtest' );
fclose ( $imageRP );
}
---------------- ③
NGな例 ----------------
B.php として以下
<?php
include 'a.php';
test();
function test(){
//~~~ 略 ~~~
$imageRP = fopen ( $dir_img . $imageName, "w" );
fwrite ( $imageRP, 'testtest' );
fclose ( $imageRP );
}
?>
---------------- ④
NGな例 ----------------
B.php として以下
<?php
include 'a.php';
test();
function test(){
//~~~ 略 ~~~
$imageRP = fopen ( strval( $dir_img ) . strval( $imageName ), "w" );
fwrite ( $imageRP, 'testtest' );
fclose ( $imageRP );
}
?>
-------------------------------------------------------------------------------------------------------------------------------
この4つの種類で動くのは①と②だけだと・・・・・思うのですが、
意味が分からなくて仕方ないのでした・・・・
多分、fopen の第一引数のバグなのかな?
ありえない・・・・・
見落とし?
本当に意味不明で、型を指定すると、特にLinux 環境で
動くことを度々経験しているので、Linux には何かあると思っています。
困ったから、動いている関数は、動いている状況からあまり
手を加えたくない・・・・・w
困ったなw
同様な経験をお持ちで、バージョンアップでバグが取れた以外の手で
直した経験がある方がいらっしゃいましたら、是非お教え下さい<_ _>
メモでした。
追伸:
そういえば、前は三角関数の関係に、値を受け渡す時に、
型を変換しないとLinux ではうまくいかなかった事もあった覚えが(謎。
コメント一覧