個人的メモです

 

Q.契約しているレンタルサーバーのエラーログに mod_mime_magic: can’t read エラーが多数記録される。

A.あくまでもエックスサーバーの場合ですが、WAF(Webアプリケーションファイアーウォール)の設定を「強化」していたために、記録されていました。

PHPなど自作のプログラムを使用しない場合は関係ありませんが、使用する場合はエラーになることがあるようです。

解決策としてWAFの設定を変え、少し「セキュリティを甘く」したら記録されなくなりました。

 

 

Q. file_put_contentsで HTTP wrapper does not support writeable connections と表示された

A. httpから始まるパスを指定した場合のエラー。それ以外のパス指定を使用

 

Q. file_put_contentsで failed to open stream: Permission denied

A. 見てわかる通り、パーミッションエラー

 

Q. CSVファイルの読み込みで

Undefined offset: 1 inと表示された(その3)

A.CSVファイル内の項目を””や”で囲んでいない場合

[0] => Array ( [0] => 飲食店,20 [1] => )
[1] => Array ( [0] => 病院 [1] => 7 )

分割できなかったり、できたりするためで

分割できない時は[1]の値がないので

Undefined offset: 1 in となる

そこで”で囲めば
[0] => Array ( [0] => ‘飲食店’ [1] => 20 )
[1] => Array ( [0] => ‘病院’ [1] => 7 )
と分割ができる。

そして”が不要ならば転送前にtrimを使用すれば、

$koumoku = trim($data2[0], "'");

 

[0] => Array ( [0] => 飲食店 [1] => 20 )
[1] => Array ( [0] => 病院 [1] => 7 )

と”の除去が可能となる。

 

CSVファイルの読み込みでUndefined offset:が出る場合は、CSVファイル内の文字列を”で囲み、print_rやprintで中身を表示するのが解決法の1つ。

また、CSVファイルのデータ構造を変えて

A,100

B,50

・・・

という複数レコードを

A,100,B,50・・・

と単一レコードに変えて

list($kou_a, $kou_aa, $kou_b, $kou_bb・・・) = $value;

とlist関数を使うという方法もある。

 

 

Q. Undefined offset と表示された(その2)

Notice: Undefined offset: 1 in TEST.php on line 43

A. 読み込んだCSVファイル内に

1件目 ABC

2件目 ABC,DEF

と、項目数(レコード長)が異なるデータがあった時に発生。CSVファイルの出力処理の修正で対応しました。

 

Q. CSVファイルの読み込みで

Undefined offsetと表示された(その1)

Notice: Undefined offset: 1 in a1.php on line 40

Notice: Undefined offset: 2 in a1.php on line 40

Notice: Undefined offset: 3 in a1.php on line 40

A. 最終行に「改行のみ」の空白行があると、上記になりました。その場合、元データであるCSVファイル内の空白行を消して解決しました。

取り除く処理として

・ループ処理で改行文字を入れるタイミングをずらす

・ファイル末端(EOF)の改行文字を取り除く

などが考えられます。

 

Q. Undefined variable と表示された

Notice: Undefined variable: sv_kitai in a1s.php on line 43

A. 変数 sv_work を使用しているが中身が何かわからない、不安定な状態ですよ、という忠告・警告。

$sv_work = “”;

など空文字やゼロを代入し初期化すれば回避できます。

 

Q. 過去のPHPソースを実行したら

Fatal error: Uncaught Error: Cannot use string offset as an array

と表示された

A. 日本語訳は

「致命的なエラー:キャッチされないエラー:文字列オフセットを配列として使用できません」

例えば配列Dataの初期化

$this->Data = “”;

$this->Data = array();

現在のPHPバージョンでは、配列の初期化は array() でしないといけないからだそうです。

 

エラーも直った理由も不明(2021/4/21)

37 foreach ($file as $value) {
38 list($clus_day, $jichi_cd) = $value;

 

Notice: Undefined offset: 6 in XXXXXXXXXXXXXX on line 38

38行目でエラーがあると表示されたものの、原因がわからない

 

そこで試しに「38行目で改行」してみたところ

37 foreach ($file as $value) {
38
39 list($clus_day, $jichi_cd) = $value;

エラーが直ったという、意味不明な現象がありました。

 

Q.imagettftextが動作しない

A.「環境によるかもしれませんが

フォントファイルは「絶対パス」で指定しないといけない模様。

使用例

$text = ‘Testing…’;

$font = dirname(__FILE__) .’/ipaexg.ttf’;

imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

 

 

PHPメニューへ戻る

 



ȥåץڡ