勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ

PHPでeval実行時に「eval()'d code on line」エラー

   2024/01/26  PHP

PHPでeval実行時に「eval()'d code on line 〇〇」というエラーが発生した。他所のシステムでPHP形式の配列を書いて、それをfile_get_contentsで持ってきてevalで実行してたんだけどどうも中で構文エラーが発生しているっぽい。また他所のシステム内では毎回データが変わるので、エラーが発生する場合としない場合があり。

何とかして発生時だけfile_get_contentsの中身をエラーログに吐き出したいと悩んだ結果、よく考えるとwarningエラーなのでプログラムは止まらないため普通に書いたらよかった。

$file = file_get_contents("./aaa.html");
eval($file); //$fileの中では$aaaという配列を定義してたとする

if (!$aaa) { //evalでエラーが発生していた場合、$aaaは定義されないのでfalseになる
    //エラー処理
}

try~catchではうまいこといなかったので注意する。

 - PHP

  関連記事

wp_mail関数でエンベロープFrom(Return-Path)が指定できない場合の対応方法
wp_mail関数でエンベロープFrom(Return-Path)が指定できない場合の対応方法

WordPress内に設置されたお問い合わせのフォームようなシステムでエンベロー ...

HTML / CSSで作成したコンテンツをPDFファイルで出力する方法(TCPDF)
HTML / CSSで作成したコンテンツをPDFファイルで出力する方法(TCPDF)

HTML / CSSで作成したコンテンツをPDFファイルで出力させたい。以前mp ...

PHP5.4系でAPCが上手く動かなかったので5.5にアップデート&Zend OPcache導入
PHP5.4系でAPCが上手く動かなかったので5.5にアップデート&Zend OPcache導入

PHP5.3系から5.4系にアップデートしてから、WordPressがちょっと重 ...

phpQueryを利用したjQueryライクなスクレイピング方法
phpQueryを利用したjQueryライクなスクレイピング方法

phpQueryというライブラリを使用することでjQueryのセレクタ指定のよう ...

MySQLで直近に挿入したオートインクリメントの値と次回挿入する値を取得する方法
MySQLで直近に挿入したオートインクリメントの値と次回挿入する値を取得する方法

phpとmysqliを使っている中で次回挿入するオートインクリメントの値と、前回 ...