2010年1月 9日

[PHP-users 34924] Re:syck_load関数のエラー処理に関して

こんにちは、桑田といいます。

2009/12/22 岸本 弥生 <yayoi@xxxxx>:
> ここにポストするべきか悩ましいのですが、YAMLパーサのsyck拡張モジュールで
> ハマっています。
>
> 正常系は正しく機能しますが、YAMLファイルの書き方に誤りがあった場合
> syck_load()関数がSegmentation faultで終了してしまいます。

>
> 書式に誤りがある旨をユーザに通知する様、例外処理を書きたいですが、
> 書けずに困っています。

php_yaml を使ってみてはどうでしょうか。
参考
http://gihyo.jp/dev/serial/01/yaml_library/0004?page=2

libyaml 0.0.1, php_yaml 0.3.0, php 5.2.11 を使って手元で試したところ、
間違ったYAMLを読んでもsegmentation faultにはなりませんでした。

example.php:

<?php
if (! extension_loaded('yaml')) {
dl('yaml.so') or die('cannot load yaml.so.');
}

$str = file_get_contents("example.yaml");
$ydoc = yaml_parse($str);
var_dump($ydoc);
?>

example.yaml(4行目にsyntax error):

- name: Haruhi
gender: F
age: 16
- name: "Kyon
gender: M
age: 16

実行結果:

$ php example.php
PHP Warning: yaml_parse(): parser error in /tmp/example.php on line 7
bool(false)

・・・とここまで書いて気づいたのですが、「YAMLファイルのどこが間違っているか」
という情報はphp_yamlではとってこれなさそうですね。残念。
お役に立てそうにない情報ですみません。

--
regards,
makoto kuwata
_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2010年1月 9日 18:39
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/92221
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。