操作
Bug(バグ) #3412
未完了画像ストレージ設定を Filesystem にした時に設定が存在しない場合のエラーログとディレクトリが存在しない場合のエラーログが同じなため問題が特定しにくい
開始日:
2013-09-27
期日:
進捗率:
0%
予定工数:
3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)
説明
概要¶
画像ストレージ設定を Filesystem にした時に設定が存在しない場合のエラーログとディレクトリが存在しない場合のエラーログが同じなため問題が特定しにくい.
OpenPNE.yml で例えば下記のような設定を行い,master_dir に設定したディレクトリが存在しない場合でもエラーログが master_dir を設定してない場合と同じものが出力される.これは設定がされていないという問題と誤認するため問題解決への時間が無駄にかかってしまう.
image_storage: Filesystem image_storage_filesystem_master_dir: '/tmp/openpne_img'
実際にディレクトリが存在してないかどうかを確認.
$ ls /tmp/openpne_img ls: cannot access /tmp/openpne_img: No such file or directory
エラーログ
"op_image_storage_filesystem_master_dir" must be configured in OpenPNE.yml
原因¶
sfImageStorageFilesystem クラスで設定を受け取った後に直接 is_dir() を用いているため設定が存在する場合か is_dir() が false となるかという点について区別がされていない.
plugins/sfImageHandlerPlugin/lib/image/storage/sfImageStorageFilesystem.class.php 20 public function getPathToImage($filename) 21 { 22 $baseDir = sfConfig::get('op_image_storage_filesystem_master_dir'); 23 if (!is_dir($baseDir)) 24 { 25 throw new RuntimeException('"op_image_storage_filesystem_master_dir" must be configured in OpenPNE.yml'); 26 } 27 $path = $baseDir.DIRECTORY_SEPARATOR.str_replace(DIRECTORY_SEPARATOR, '-', $filename); 28 29 return $path; 30 }
操作