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

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

詳細はこちら
PHP

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

Q&A

解決済

2回答

742閲覧

php ini_set('display_errors', ture);

yuki911

総合スコア27

PHP

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

0グッド

0クリップ

投稿2019/11/01 11:17

前提・実現したいこと

エラーログで、ini_set('display_errors', ture);に未定義の定数を使ったと出ましたがini_setが未定義とはどういうことでしょうか?

PHP Warning: Use of undefined constant ture - assumed 'ture' (this will throw an Error in a future version of PHP) in /Applications/MAMP/htdocs/candy/index.php on line 2

該当のソースコード

php

1ini_set('display_errors', ture); 2error_reporting(E_ALL); 3session_start(); 4 5if(filter_input(INPUT_SERVER,'RWQUEST_METHOD') === 'POST'){ 6 $name = filter_input(INPUT_POST, 'name'); 7 $pass = filter_input(INPUT_POST, 'pass'); 8 9 if($name === ''){ 10 $error['name'] = 'ユーザー名は入力必須です。'; 11 } 12 if(strlen($name) > 10){ 13 $error['name'] = '名前は10文字以内です。'; 14 } 15 if($pass === ''){ 16 $error['pass'] = 'パスワードは入力必須です。'; 17 } 18 if(strlen($pass) <= 5){ 19 $error['pass'] = 'パスワードは5文字以上です。'; 20 } 21 if(empty($error)){ 22 $_SESSION['login'] = $row; 23 header('Location: check.php'); 24 exit(); 25 } 26} 27 ?> 28 <!DOCTYPE html> 29 <html lang="ja"> 30 <head> 31 <meta charset="utf-8"> 32 <title>新規登録フォーム</title> 33 </head> 34 <body> 35 <h1>へようこそ!</h1> 36 <p>新規登録をして利用を開始しましょう。<br>メールアドレス、パスワードはログイン時に必要な情報になります。</p> 37 <p>もしのアカウントを持っている場合は<a href="login.php?action=rewrite">ログイン</a>から。</p> 38 <form action="" method="post"> 39 <?php if(isset($error['login'])) : ?> 40 <?php echo h($error['login']); ?> 41 <?php endif; ?> 42 <p> 43 <label for="name">ユーザー名</label> 44 <input type="text" name="name" id="user_id"> 45 <?php if(isset($error['name'])) : ?> 46 <?php echo h($error['name']); ?> 47 <?php endif; ?> 48 </p> 49 <p> 50 <label for="">パスワード</label> 51 <input type="password" name="pass" id="password"> 52 <?php if(isset($error['pass'])) : ?> 53 <?php echo h($error['pass']); ?> 54 <?php endif; ?> 55 </p> 56 <p> 57 <p><input type="submit"value="ログイン"></p> 58 </p> 59 </body> 60 </html> 61

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

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

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

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

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

guest

回答2

0

解決はされていますが、誤解されている部分を解かないとおそらく同じ間違いをしそうなので、軌道修正も含めてアドバイスとします。

ini_setが未定義とはどういうことでしょうか?

いいえ。あまり感覚で訳さないほうが良いです。
自身で「ini_set('display_errors', ture);に未定義の定数を使った」と書かれているのに同じ文中で話が変わってます。

PHP Warning: Use of undefined constant ture - assumed 'ture' (this will throw an Error in a future version of PHP) in /Applications/MAMP/htdocs/candy/index.php on line 2

Google翻訳:PHP警告:未定義の定数tureの使用-2行目の/Applications/MAMP/htdocs/candy/index.phpで未定義の定数tureの使用-「ture」(将来のバージョンのPHPではエラーがスローされます)を想定

なので、「ini_set('display_errors', ture);に未定義の定数を使った」で合っています。
ちゃんと全文訳せば「未定義の定数ture」というキーワードが出ているのでそれをもとに問題の切り分けを行います。

今回のように使っている関数が明確であれば一番確実なのは「その関数の仕様を確認すること」です。

ini_set()

ini_set ( string $varname , string $newvalue ) : string

第2引数が「string型」を期待されています。
なので通常はstring型で定義をします。

では第2引数に指定されたのはstring型となっているか?が争点となります。

ture となっていますが、これがstring型か?ですね。
ただエラーからするとそもそも「未定義の定数」とあるので、PHPの既存の機能ではなく「ユーザーが定義しようとした定数」として解釈されているのがわかります。

次は「定数とは?」を確認します。

定数

有効な定数の名前は、 文字またはアンダースコアで始まり、任意の数の文字、数字、 アンダースコアが後に続きます。正規表現で示すと次のようになります。 [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

ざっくり解釈だと「$で始まらない文字列」は基本的に「定数」となります。

質問者さんが入れようとしたのは論理型のtrueとのことですが、一応これも定数のうちです。

boolean リテラルを指定するには、**定数 TRUE または FALSE **を指定してください。 両方とも大文字小文字に依存しません。

若干好みは出るかもしれませんが、一応定数は慣習的に大文字が使われるので、TRUE/FALSEと書いたほうが丁寧です。

ただ、先に書いたように、ini_set()は第1引数も第2引数もstringが期待されていますし、実行時設定では'1'とされているので、倣ったほうが間違いは少ないようには思います。
注意事項もあるので読んでおいたほうが良いです

投稿2019/11/01 12:04

m.ts10806

総合スコア80875

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

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

0

ベストアンサー

ture って何ですか true のtypoでしょうか

投稿2019/11/01 11:22

takepan1973

総合スコア821

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問