<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>エラーメッセージ &#8211; PHPプログラミングの教科書 [php1st.com]</title>
	<atom:link href="https://php1st.com/trouble/error/feed" rel="self" type="application/rss+xml" />
	<link>https://php1st.com</link>
	<description>気軽に読めるPHP入門書・PHPスクリプトが動かないときの原因と対策などを紹介します。</description>
	<lastBuildDate>Sat, 10 Nov 2018 02:25:00 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>
	<item>
		<title>「http:// wrapper is disabled in the server configuration by allow_url_include=0」と表示されるとき</title>
		<link>https://php1st.com/2571</link>
		
		<dc:creator><![CDATA[西沢直木]]></dc:creator>
		<pubDate>Sat, 10 Nov 2018 02:25:00 +0000</pubDate>
				<category><![CDATA[エラーメッセージ]]></category>
		<guid isPermaLink="false">https://php1st.com/?p=2571</guid>

					<description><![CDATA[PHPのWarning「http:// wrapper is disabled in the server configuration by allow_url_include=0」はファイルをインクルードできないときな [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>PHPのWarning「http:// wrapper is disabled in the server configuration by allow_url_include=0」はファイルをインクルードできないときなどに表示されます。</p>
<p>特に、URLを指定したファイルインクルードが許可されていないレンタルサーバーなどで表示されます。</p>
<p>たとえば、次のようなコードです。</p>
<pre class="brush: php; gutter: false; title: Warningが表示されるかも; notranslate">
$template = get_template_directory_uri() . '/template.php';
</pre>
<p>get_template_directory_uri関数によって「http://…template.php」のようなURLが返されますが、URLベースのファイルインクルードが許可されていないとエラーになります。</p>
<p>その場合、get_template_directory_uri関数の代わりにget_template_directory関数を使って物理パスを取得することでWarningは解消されます。</p>
<p>php.iniでallow_url_includeの設定を変更した方が簡単そうですが、これが許可されているかどうかはレンタルサーバーによって異なります。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>「Warning: array_key_exists()」と表示されるとき</title>
		<link>https://php1st.com/2406</link>
		
		<dc:creator><![CDATA[西沢直木]]></dc:creator>
		<pubDate>Tue, 18 Jul 2017 23:00:14 +0000</pubDate>
				<category><![CDATA[エラーメッセージ]]></category>
		<guid isPermaLink="false">https://php1st.com/?p=2406</guid>

					<description><![CDATA[array_key_exists関数は配列に指定インデックスが存在するか調べることができます。使用例は次のようになります。 &#60;?php $ar = array(&#34;t&#34;=&#62;&#34;東京&#038; [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>array_key_exists関数は配列に指定インデックスが存在するか調べることができます。使用例は次のようになります。</p>
<pre class="brush: php; gutter: false; title: 配列にインデックスが存在するか調べる; notranslate">
&lt;?php
$ar = array(&quot;t&quot;=&gt;&quot;東京&quot;, &quot;c&quot;=&gt;&quot;千葉&quot;, &quot;k&quot;=&gt;&quot;神奈川&quot;);

if (array_key_exists(&quot;t&quot;, $ar)) {
    echo &quot;キーは存在します。&quot;;
} else {
    echo &quot;キーは存在しません。&quot;;
}
?&gt;
</pre>
<div class="list-title">実行結果</div>
<div class="res">キーは存在します。</div>
<p>array_key_exists関数の第一パラメータはインデックス、第二パラメータは配列を指定しますが、次のような指定をすると「Warning: array_key_exists()」のようなWarningが表示されます。</p>
<pre class="brush: php; gutter: false; title: 第一パラメータに配列を指定した場合; notranslate">
&lt;?php
$ar = array(&quot;t&quot;=&gt;&quot;東京&quot;, &quot;c&quot;=&gt;&quot;千葉&quot;, &quot;k&quot;=&gt;&quot;神奈川&quot;);

if (array_key_exists(array(&quot;t&quot;), $ar)) {
    echo &quot;キーは存在します。&quot;;
} else {
    echo &quot;キーは存在しません。&quot;;
}
?&gt;
</pre>
<p>最初のパラメータは文字列または数値にする必要があるとのエラーメッセージが表示されます。</p>
<div class="list-title">実行結果</div>
<div class="res">Warning: array_key_exists(): The first argument should be either a string or an integer</div>
<pre class="brush: php; gutter: false; highlight: [2]; title: 第二パラメータが配列ではないとき; notranslate">
&lt;?php
$ar = &quot;東京&quot;;

if (array_key_exists(&quot;t&quot;, $ar)) {
    echo &quot;キーは存在します。&quot;;
} else {
    echo &quot;キーは存在しません。&quot;;
}
?&gt;
</pre>
<p>第二パラメータは配列に、というエラーメッセージが表示されます。</p>
<div class="list-title">実行結果</div>
<div class="res">Warning: array_key_exists() expects parameter 2 to be array, string given </div>
<pre class="brush: php; gutter: false; title: 第二パラメータにNULLを指定した場合; notranslate">
&lt;?php
$ar = NULL;

if (array_key_exists(&quot;t&quot;, $ar)) {
    echo &quot;キーは存在します。&quot;;
} else {
    echo &quot;キーは存在しません。&quot;;
}
?&gt;
</pre>
<p>第二パラメータにNULLが指定されている、とのエラーメッセージが表示されます。</p>
<div class="list-title">実行結果</div>
<div class="res">Warning: array_key_exists() expects parameter 2 to be array, null given</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>「Warning: A non-numeric value encountered」と表示されるとき</title>
		<link>https://php1st.com/2398</link>
		
		<dc:creator><![CDATA[西沢直木]]></dc:creator>
		<pubDate>Tue, 18 Jul 2017 10:54:46 +0000</pubDate>
				<category><![CDATA[エラーメッセージ]]></category>
		<guid isPermaLink="false">https://php1st.com/?p=2398</guid>

					<description><![CDATA[PHPのエラーメッセージ「Warning: A non-numeric value encountered」は数値が求められる処理で文字列が指定されている場合などに表示されます。たとえば、次のコードは単純な足し算ですが、 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>PHPのエラーメッセージ「Warning: A non-numeric value encountered」は数値が求められる処理で文字列が指定されている場合などに表示されます。たとえば、次のコードは単純な足し算ですが、変数$bには数値が入っていません。</p>
<pre class="brush: php; gutter: false; title: ; notranslate">
&lt;?php
$a = 100;
$b = &quot;&quot;;
echo $a + $b;
?&gt;
</pre>
<p>変数$bに数値ではない値が入っているので、$a + $bは「Warning: A non-numeric value encountered」になります。</p>
<p>対策はいくつかあります。そもそもWarningなので非表示にすれば済む問題かもしれませんが。それはともかく、次のように型を変換する方法があります。</p>
<pre class="brush: php; gutter: false; title: ; notranslate">
&lt;?php
$a = 100;
$b = (int)&quot;&quot;;
echo $a + $b;
?&gt;
</pre>
<p>これでエラーメッセージは表示されなくなります。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>phpMyAdminの「Fatal error: Maximum execution time of 300 seconds exceeded」の対策</title>
		<link>https://php1st.com/2392</link>
		
		<dc:creator><![CDATA[西沢直木]]></dc:creator>
		<pubDate>Mon, 17 Jul 2017 01:17:41 +0000</pubDate>
				<category><![CDATA[エラーメッセージ]]></category>
		<guid isPermaLink="false">https://php1st.com/?p=2392</guid>

					<description><![CDATA[PHPの処理に時間がかかると「Fatal error: Maximum execution time of 300 seconds exceeded」のようなエラーメッセージが表示されます。これはPHPスクリプトの時間制 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>PHPの処理に時間がかかると「Fatal error: Maximum execution time of 300 seconds exceeded」のようなエラーメッセージが表示されます。これはPHPスクリプトの時間制限を超えてしまったという意味です。</p>
<p>php.iniの「max_execution_time」で制限時間を緩めることで解決できます。</p>
<pre class="brush: php; gutter: false; title: PHPスクリプトの実行時間制限を設定する例（3600秒＝1時間）; notranslate">
max_execution_time=3600
</pre>
<p>秒数を指定するので、この例の3600は1時間になります。本来は危険な設定ですが、どうしてもデータベースのインポートなどで時間がかかる場合のみの限定的な対応です。完了後、<span class="stro">小さい数値に戻すのを忘れないで</span>ください。</p>
<h2>phpMyAdminでエラーが生じる場合</h2>
<p>上記の設定を行っても<span class="stro">phpMyAdminでデータベースのインポート</span>など時間がかかる処理を行うと冒頭のエラーメッセージが表示される場合があります。</p>
<p>これは、phpMyAdminの設定ファイル（config.default.php）で時間制限されているためです。</p>
<pre class="brush: php; gutter: false; title: config.default.phpの時間制限; notranslate">
$cfg&#x5B;'ExecTimeLimit'] = 300;
</pre>
<p>「300」は300秒のことです。この制限に引っ掛かるため「Fatal error: Maximum execution time of <span class="stro">300 seconds</span> exceeded」となるわけです。この数値を3600にすれば1時間になります。</p>
<pre class="brush: php; gutter: false; title: phpMyAdminの実行時間制限を設定する（config.inc.php）; notranslate">
$cfg&#x5B;'ExecTimeLimit'] = 3600;
</pre>
<p>無制限で実行したければ「0」にします。</p>
<p>これでエラーが解消され、時間がかかるデータベースインポートも実行可能になります。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>「Warning: Division by zero」と表示されるとき</title>
		<link>https://php1st.com/2367</link>
		
		<dc:creator><![CDATA[西沢直木]]></dc:creator>
		<pubDate>Thu, 01 Dec 2016 02:10:15 +0000</pubDate>
				<category><![CDATA[エラーメッセージ]]></category>
		<guid isPermaLink="false">https://php1st.com/?p=2367</guid>

					<description><![CDATA[「Division by zero」というWarningは数値をゼロで割ったときに表示されます。「100 ÷ 0」のような割り算はできないということです。たとえば、次のPHPスクリプトです。 &#60;?php $a =  [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>「Division by zero」というWarningは数値をゼロで割ったときに表示されます。「100 ÷ 0」のような割り算はできないということです。たとえば、次のPHPスクリプトです。</p>
<pre class="brush: php; gutter: false; title: 「Warning: Division by zero」と表示されるPHPスクリプト; notranslate">
&lt;?php
$a = 100;
$b = 0;
echo $a / $b;
?&gt;
</pre>
<div class="list-title">実行結果</div>
<div class="res">
Warning: Division by zero …略…
</div>
<p>上記のようなPHPスクリプトを書くことはないでしょうが、注意が必要な典型的な場面が平均の計算です。集計データがない場合などに分母が0になる場合があるので、「分母が0以外のときは」という条件で割り算する必要があります。たとえば、次のようになります。</p>
<pre class="brush: php; gutter: false; title: ゼロ割を回避する; notranslate">
&lt;?php
$a = 100;
$b = 0;

if ($b) {
    echo $a / $b;
} else {
    echo 0;
}
?&gt;
</pre>
<div class="list-title">実行結果</div>
<div class="res">0</div>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
