🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

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

Q&A

解決済

1回答

713閲覧

エラーになる場合とならない場合があり、判定の違いがよくわからない

Ashi

総合スコア139

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

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

0グッド

0クリップ

投稿2021/02/04 05:34

Laravel(ver.6)を使用してCMSの開発を行っています

MAMPで開発環境を準備してローカルで作業を行っていましたが
先ほどさくらインターネットのサーバーにファイルを一式アップして確認したところ

ローカルでは問題なく動いていたところが
さくらのサーバー上ではエラーとして判定され動かなくなってしまいました

お恥ずかしながら無知のため原因が全くわかっていません、
何か少しでも解決の糸口となるアドバイスをいただけますと幸いです。

class OrdersController extends Controller { /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $name = ['オーダー','ORDER','admin.order'] ; $level = Level::all(); // 登録されているユーザーレベル(1~5)設定を取得 $check = Level::select('level')->get(); foreach( $check as $check ){ $act[] = $check->level ; } return view( 'page.order.create' , [ 'name' => $name , 'act' => $act , 'level'=> $level , ]); }

上記コードの

'act' => $act ,

の部分で
Undefined variable:act

というエラーになります

そして不思議なことに
ノートPC(macbook pro)では上記のエラー画面が出るのに
iMacでは同じことをしてもエラー画面が表示されずブラウザが真っ白になります

何かお気づきのことがあれば
ぜひ教えてください

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

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

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

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

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

AbeTakashi

2021/02/04 05:49

エラーログを確認したでしょうか? エラーが出ているファイル名や行数が表示されているはずなので、ますはそこを確認すべきかと思います。それでも分からない場合はエラーログの内容を提示するなどした方が良いでしょう。正直なところ、与えられたこの情報だけで正確に答えるのはエスパーでもない限り無理かと。 といいつつエスパー的に答えてみますが、$actがforeach内でしか定義されてないので、foreachのループに入らない限り$actは未定義でUndefinedと表示されるのだと思います。つまり$checkの値があるかないかで挙動が変わるのだと思いますよ。なぜそうなるのかはこのソースコードだけではまったく見当は付きません。
Ashi

2021/02/04 06:03

エラー箇所は上記記載の部分で、「Undefined variable:act」という内容でした。 情報が足りずご迷惑をおかけしました。 別の方のアドバイスで一応解決はしたのですが 全く同じ内容のファイルがローカルとレンタルサーバー上でエラーかどうかの判定が異なる理由や原因が あまりよくわかっていません、おそらくそれを知ることでもう少しLaravelやPHPを理解できると思います。 ご丁寧にありがとうございました。
guest

回答1

0

ベストアンサー

PHPのエラー表示がonかどうかの違いがあるのでは。
未定義の変数に配列としていきなり使おうとするとありえます。foreach入らなかったら当然Undefined variableとなりますしね。

ひとまず先に$act=[];とかで初期化してやってください。
これは他の場面でも同じです。

投稿2021/02/04 05:45

m.ts10806

総合スコア80875

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

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

Ashi

2021/02/04 06:01

ありがとうございます! ご指摘いただいたとおりしましたところ解決できました! MAMPではなぜこれがエラーにならなかったのかがよくわかりませんが 本当に奥が深いですね、もっと勉強します!
m.ts10806

2021/02/04 06:10

可能性を回答に書いてます。 眼の前のことだけを優先せずに、前提や全体をちゃんと読んでください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問