質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

Q&A

解決済

2回答

4493閲覧

ロリポップサーバーでは動くのに、ローカル環境だと、FuelPHPのValidationクラスが動かない

kobayasu

総合スコア14

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

0グッド

1クリップ

投稿2015/06/03 03:51

FuelPHPのValidationクラスですが、
サーバーの環境によって動いたり動かなかったりします。

全く原因がわからなくて困っています。
どなたかご教授いただけないでしょうか?

ロリポップサーバーでは動き、
ローカルにXAMPPで構築したサーバーでは動きません。

▼ローカル
Windows8.1
XAMPP Version: 5.5.24
Fuel Veresion: 1.7
PHP Veresion: 5.5.24

▼ロリポップ
Fuel Veresion: 1.7
PHP Veresion: 5.3

例えば私のローカル環境で以下のコードを実行すると、
次のエラーコードが発生します。

$val=Validation::forge();
$val->add_field('select','選択','required');
$val->run();

エラーコードは下記になります。

InvalidArgumentException [ Error ]:
Arr::merge() - all arguments must be arrays.

COREPATH/classes/arr.php @ line 824

819
820 foreach ($arrays as $arr)
821 {
822 if ( ! is_array($arr))
823 {
824 throw new \InvalidArgumentException('Arr::merge() - all arguments must be arrays.');
825 }
826
827 foreach ($arr as $k => $v)
828 {
829 // numeric keys are appended

以上、どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

Fuelでは
記述の開始を

<?php でも <? でも よかったと理解していたつもりなのですが、 Validationの日本語化ファイルを <? で始めていたことが原因のようでした。 <?php 書き始めたらエラーが取れました。 wansuiさん、ご丁寧に対応くださりまして ありがとうございました。

投稿2015/06/06 05:27

kobayasu

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

配列にマルチバイトが含まれていますね。
ちゃんと文字コード等は合っていますか?
恐らくShift_JISとUTF-8の問題だと思いますが…。
違ってたらスイマセン。

投稿2015/06/03 05:07

inukujira

総合スコア130

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kobayasu

2015/06/03 07:18

たしかに!!!と思いまして、php.iniの設定をUTF-8に変えたのですが変化なく。 ロリポップと思じように設定してみたのですがダメでした。。。 あと、いっそValidationに使う配列の日本語をすべて英語にしてやってみたのですが、 同じエラー内容でした。。。
inukujira

2015/06/03 08:18

なるほど。 であれば、問題はエラーが起こっている際の「$arr」の中身がどうなっているかですね。 phpはよくわかりませんが、824行目にブレークポイントを置いてデバッグ実行してみて 「$arr」の配列変数の中身が、意図的なものになっているかどうか確認すれば何かわかるかもしれませんね。
kobayasu

2015/06/04 02:23

wansui様 ありがとうございます。Eclipeなど使っておりませんでデバックのやり方が分からず。。。その代わりに、Validationを日本語化して使っていたのですが、(このリンクの通り。http://btt.hatenablog.com/entry/2012/06/15/002453) fuel/app/config/config.phpの'language' => 'ja' を 'en' に変えると、エラーがなくなりValidationの注意文言が英語でしっかり出るようになりました。 やはりwansui様がご指摘のとおり言語設定の問題のようです。 そこでご質問させていただきたいのですが、 PHPの言語設定をphp.iniを一通り直してみたつもりなのですが、 うまくいきません。(各種WEBページを見たつもりなのですが) どの部分を特に注意して変えるべきなのでしょうか?
inukujira

2015/06/04 05:37

PHPはさっぱりなので回答にならないと思いますが もし私なら次の手順で確認します。 まずは、mbstringのモジュールが正しく読み込まれているか確認する。 確か、phpinfoで確認するとmbstringがenableとなっているハズです。 それから、php.iniでmbstringの設定を行います。 [mbstring] mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = pass mbstring.http_output = pass mbstring.encoding_translation = Off 環境が整ったら、ローカルで動かすファイルの文字コードがUTF-8である事を確認します。 sakuraエディタ等でファイルを開けば、右下部分にファイルの文字コードが表示されています。 そして、ファイルの内容自体にも正しい文字コードを指定するコードが明記されている事を確認します。 その上で、実行してみれば文字コードの不一致によるエラーは発生しないんじゃないかと思います。 よくあるパターンが、ファイルの内容にはUTF-8が指定されてたけど そのファイル自体がShift_JISだったパターンが多いのではないかと思います。 参考にならなくてスイマセン。
kobayasu

2015/06/06 05:25

wansuiさん 本当にご丁寧にありがとうございました。 やっと先ほど自己解決できました。 Fuelのバグ?のようでした。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問