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

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

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

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

PHP

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

FuelPHP

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

Q&A

解決済

1回答

4246閲覧

gofuelphp1.8でViewやControllerにアクセスができません

ccan

総合スコア7

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

PHP

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

FuelPHP

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

1グッド

0クリップ

投稿2016/10/10 16:54

編集2016/10/13 04:31

###前提・実現したいこと
fuelphp1.8での開発をすることになったのですが、公式ドキュメントのビューに説明にあるhomeと言う下記のエラーが発生してしまいサンプルプログラムを動かすことができません。

Welcomのページの出力はできましたが新しいソースコードがうまく動いてくれない状況です。

###発生している問題・エラーメッセージ
Warning!

Fuel\Core\PhpErrorException [ Warning ]:
array_merge(): Argument #2 is not an array
COREPATH/classes/asset.php @ line 116

111 {
112 \Errorhandler::notice('Asset with this name exists already, cannot be overwritten.');
113 return $exists;
114 }
115
116 static::$_instances[$name] = new \Asset_Instance(array_merge(static::$default_config, \Config::get('asset'), $config));
117
118 if ($name == 'default')
119 {
120 static::$_instance = static::$_instances[$name];
121 }

Backtrace

COREPATH/bootstrap.php @ line 103 COREPATH/classes/asset.php @ line 116 COREPATH/classes/asset.php @ line 95 COREPATH/classes/asset.php @ line 180 APPPATH/views/welcome/404.php @ line 6 COREPATH/classes/view.php @ line 244 COREPATH/classes/view.php @ line 260 COREPATH/classes/view.php @ line 631 COREPATH/classes/presenter.php @ line 324 COREPATH/classes/presenter.php @ line 341 COREPATH/classes/response.php @ line 382 DOCROOT/index.php @ line 113

###該当のview
ソースコード元

<html> <head> <title><?php echo $title; ?></title> </head> <body> Welcome, <?php echo $username; ?>. </body> </html>

###該当のController
ソースコード元

class Controller_Home extends Controller
{
public function action_index()
{
$data = array(); // ビューに渡す変数を格納

$data['username'] = 'Joe14'; $data['title'] = 'Home'; // ブラウザに出力するビューを割り当てる return View::forge('home/index', $data); }

}

###試したこと
1.fuelphp-1.8のダウンロードをzipとoil create する方法両方で試しました。
2.app/config.phpを日本語環境に合わせた状態で実行,デフォルトのまま実行
3.profilingをtrueにして実行
4.security.output_filterがnullになっていないか確認
5.asseet.phpの変更がないことの確認(新しいfuelphpのasset.phpと本体のasset.phpをdiffで比較)

###補足情報(言語/FW/ツール等のバージョンなど)
構成
PHP 5.6.26-2+deb.sury.org~xenial+1 (cli)
Apache/2.4.18 (Ubuntu)
fuelphp-1.8
###Prior Contents (show)の表示(2重になっている?)
class Controller_Home extends Controller
{
public function action_index()
{
$data = array(); // ビューに渡す変数を格納

$data['username'] = 'Joe14'; $data['title'] = 'Home'; // ブラウザに出力するビューを割り当てる return View::forge('home/index', $data); }

}
class Controller_Home extends Controller
{
public function action_index()
{
$data = array(); // ビューに渡す変数を格納

$data['username'] = 'Joe14'; $data['title'] = 'Home'; // ブラウザに出力するビューを割り当てる return View::forge('home/index', $data); }

}

nnssn👍を押しています

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

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

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

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

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

kunai

2016/10/11 01:40

config/asset.php を修正されていませんか?内容提示いただけると助かります。
ccan

2016/10/11 02:54 編集

ありがとうございます。app/config/asset.phpは存在せず、core/config/asset.phpは変更せずです。fuelphp本体を言語設定周り等のconfig.phpを変更しあとはダウンロードしてそのまま動かしているような状態です。
nnssn

2016/10/11 07:21

もう一度、デフォルトで用意されているアクション、welcome/indexやwelcome/helloを閲覧するとどうなりますか?このエラー内容だとどのアクションも表示できなさそうな気もするのですが。
ccan

2016/10/11 08:10 編集

welcome/indexやwelcome/helloを閲覧することは可能でした。 profilingの設定のミスをしていたのでapp/config/config.phpのprofilingをtrueにした場合のエラーメッセージが発生したようです。ここの部分の質問は削除しておきます。
guest

回答1

0

ベストアンサー

正直まだ、全く当たりも付いてないのですが、手狭な修正依頼欄で続けるのも難しいので解答欄に書きます。

array_merge(): Argument #2 is not an array

エラーの発生場所はAsset::forge、array_mergeに渡されている第二引数がarrayじゃないう
という内容のようですね。その第二引数はというと

php

1new \Asset_Instance(array_merge(static::$default_config, \Config::get('asset'), $config));

\Config::get('asset')になっています。ここには、app/config/asset.phpがあればそれを、なければcore/config/asset.phpが読み込まれるはずです。そうなると、このasset.phpの返り値(中身)がarrayになっていないのでは?と思ったのですが...

welcome/helloを閲覧できるか確認していただいたところ、そちらは問題ないとの事なので分からなくなってしまいました。welcome/helloのviewでもAssetクラスが使われているので、asset.phpに問題があれば同じエラーが発生するはずです。


あと一点気になったのはトレースにpresenter.phpの名前があることです。

COREPATH/classes/presenter.php @ line 324 COREPATH/classes/presenter.php @ line 341

質問文のコントローラを見る限り、Presenterクラスは使用していないようなので不思議です。もしかしたら、なんらかの理由で他のアクションが実行されている可能性も?

解決につながるかは分かりませんが、config/asset.phpの中身がreturn array()の形式になっているか、welcomeコントローラにアクションを追加した場合どうなるか、追加ファイルのパーミッションあたりも確認されてみてはいかがでしょうか。

投稿2016/10/11 09:22

nnssn

総合スコア1221

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

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

ccan

2016/10/13 04:29

回答ありがとうございます。 返信が遅れてしまって申し訳ありません。 環境構築からやり直してみて、権限の付与もおこなったのですがやはり同様の結果となってしまいました。 おかしなところかはわかりませんがエラーページのPrior Contentsの表示が2重になっていました。この部分を本文に追記しておきます。 よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2016/10/13 09:18

config/route.php でルーティングをいじっている可能性とか、公開ディレクトリの.htaccessでリダイレクトする条件をいじっている可能性とかないですか? それで意図しないアクションが実行されるとか。
nnssn

2016/10/13 12:36 編集

m6uさんのルーティングというご指摘で気づいたのですが、実行されているのはサンプルで初期設定されている_404_、Controller_Welcome::action_404みたいですね。Presenterクラスも使われていました。というわけでこのトレース結果は、home/indexアクションを発見することができなくてwelcome/404を実行、その過程でなぜかconfig/asset.phpを読み取ることができなくてエラー発生という内容のようです。 (追記:手元の環境でAssetクラスを改変してarray_mergeの第二引数にnullを渡す、存在しないアクションを開いて404ページを開くで、質問文と同じトレース結果になりました。config/asset.phpを改変した場合はまた違う結果でした) 閲覧ページのuriが/path/to/home/indexになっているか、Controller_Homeクラスがfuel/app/controller/home.phpに設置されているかを今一度確認してみてください。適切に配置しているのに開けないとしたら、作成したコントローラのパーミッションや.htaccessあたりの再確認も同様にお願いします。
ccan

2016/10/13 15:09

Apacheの設定や権限、.htaccessも含めもう一度初期設定から行ったところエラーなく表示されました。ubuntuの設定にも慣れていないのでもしかしたらこの過程での原因を作ってしまったのかもしれません。 まだ自分の技量では細かい原因まで追うことはできませんがとても参考になりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問