<?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>PHP全般 &#8211; PHPプログラミングの教科書 [php1st.com]</title>
	<atom:link href="https://php1st.com/trouble/php/feed" rel="self" type="application/rss+xml" />
	<link>https://php1st.com</link>
	<description>気軽に読めるPHP入門書・PHPスクリプトが動かないときの原因と対策などを紹介します。</description>
	<lastBuildDate>Thu, 12 Sep 2019 14:59:03 +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>PHPの関数や変数の前にあるアットマークの意味は？</title>
		<link>https://php1st.com/2665</link>
		
		<dc:creator><![CDATA[西沢直木]]></dc:creator>
		<pubDate>Thu, 12 Sep 2019 14:59:03 +0000</pubDate>
				<category><![CDATA[PHP全般]]></category>
		<guid isPermaLink="false">https://php1st.com/?p=2665</guid>

					<description><![CDATA[PHPスクリプトを見ていると関数の前に「@」（アットマーク）が付いているのをみたことがありませんか？ この「@」の用途はエラーを非表示にすることです。「エラー制御演算子」とよばれます。 【参考】PHP: エラー制御演算子 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>PHPスクリプトを見ていると関数の前に「@」（アットマーク）が付いているのをみたことがありませんか？</p>
<pre class="brush: php; gutter: false; title: 関数の前にアットマーク; notranslate">
&lt;?php
@file_get_contents(&quot;input.txt&quot;);
</pre>
<p>この「@」の用途はエラーを非表示にすることです。「エラー制御演算子」とよばれます。</p>
<p>【参考】<a target="_blank" href="https://www.php.net/manual/ja/language.operators.errorcontrol.php" rel="noopener noreferrer">PHP: エラー制御演算子</a></p>
<p>ピンと来ない場合は@を取り除いて実行してみましょう。</p>
<pre class="brush: php; gutter: false; title: アットマークを削除して実行; notranslate">
&lt;?php
file_get_contents(&quot;input.txt&quot;);
</pre>
<p>「input.txt」が存在しない場合、次のようなエラーメッセージ（Warning）が表示されます。ファイルが存在しないので開けない、という警告です。</p>
<div class="list-title">実行結果</div>
<div class="res">
PHP Warning:  file_get_contents(input.txt): failed to open stream: No such file or directory in …略….php on line 2</p>
<p>Warning: file_get_contents(input.txt): failed to open stream: No such file or directory in …略….php on line 2
</p></div>
<p>もう一度@を付けて実行してみましょう。</p>
<pre class="brush: php; gutter: false; title: アットマークを付けて実行; notranslate">
&lt;?php
@file_get_contents(&quot;input.txt&quot;);
</pre>
<p>今度は「input.txt」が存在しなくてもエラーメッセージが表示されないはずです。これはエラーがなくなったのではなく、非表示にしただけです。その点、注意してください。</p>
<p>変数の前にある@も同じです。次のコードを実行すると、$aが存在しない場合はエラーメッセージが表示されます。</p>
<pre class="brush: php; gutter: false; title: 変数が存在しない場合はエラーになる; notranslate">
echo $a;
</pre>
<div class="list-title">実行結果</div>
<div class="res">
PHP Notice:  Undefined variable: …略….php on line 3<br />
Notice: Undefined variable: …略….php on line 3
</div>
<p>変数の前にアットマークを付けると上記のNoticeは表示されません。</p>
<pre class="brush: php; gutter: false; title: 変数の前にアットマークを付ける; notranslate">
echo @$a;
</pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>php.iniの場所</title>
		<link>https://php1st.com/2468</link>
		
		<dc:creator><![CDATA[西沢直木]]></dc:creator>
		<pubDate>Wed, 04 Jul 2018 13:03:13 +0000</pubDate>
				<category><![CDATA[PHP全般]]></category>
		<guid isPermaLink="false">https://php1st.com/?p=2468</guid>

					<description><![CDATA[PHPの設定を変更したくなることもありますが問題はphp.iniの場所です。場所の調べ方を紹介します。また、レンタルサーバーによってはメニューで変更できるようになっているので、簡単にまとめておきます。 php.iniの場 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>PHPの設定を変更したくなることもありますが問題はphp.iniの場所です。場所の調べ方を紹介します。また、レンタルサーバーによってはメニューで変更できるようになっているので、簡単にまとめておきます。</p>
<h2>php.iniの場所を調べる方法</h2>
<p>php.iniの場所はphpinfo関数で調べることができます。次の1行だけを入力したファイル（例：info.php）を作成します。</p>
<pre class="brush: php; gutter: false; title: ; notranslate">
&lt;?php phpinfo(); ?&gt;
</pre>
<p>このファイルをサーバーにアップロードして実行すると、「Loaded Configuration File 」にphp.iniの場所が表示されます。</p>
<div id="attachment_2520" style="width: 541px" class="wp-caption alignnone"><img fetchpriority="high" decoding="async" aria-describedby="caption-attachment-2520" src="https://php1st.com/wp-content/uploads/2018/07/2018-07-04-21-53-28.jpg" alt="php.iniの場所" width="531" height="159" class="size-full wp-image-2520" srcset="https://php1st.com/wp-content/uploads/2018/07/2018-07-04-21-53-28.jpg 531w, https://php1st.com/wp-content/uploads/2018/07/2018-07-04-21-53-28-300x90.jpg 300w, https://php1st.com/wp-content/uploads/2018/07/2018-07-04-21-53-28-320x96.jpg 320w" sizes="(max-width: 531px) 100vw, 531px" /><p id="caption-attachment-2520" class="wp-caption-text">php.iniの場所</p></div>
<h2>レンタルサーバーのメニューでphp.iniを編集する場合</h2>
<p>レンタルサーバーによってはphp.iniを簡単に編集できるメニューがあるので、上記のように場所を確認する必要もないかもしれません。</p>
<p>レンタルサーバーごとのphp.ini編集メニューをまとめておきます。</p>
<h3>エックスサーバーの場合</h3>
<p>エックスサーバーではサーバーパネルの「PHP」‐「php.ini設定」メニューで、状態をONにした後に「php.ini設定変更」または「php.ini直接編集」から設定を変更できます。</p>
<div id="attachment_2516" style="width: 555px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-2516" src="https://php1st.com/wp-content/uploads/2018/07/2018-07-04-21-14-25.jpg" alt="php.iniの編集（エックスサーバー）" width="545" height="242" class="size-full wp-image-2516" srcset="https://php1st.com/wp-content/uploads/2018/07/2018-07-04-21-14-25.jpg 545w, https://php1st.com/wp-content/uploads/2018/07/2018-07-04-21-14-25-300x133.jpg 300w, https://php1st.com/wp-content/uploads/2018/07/2018-07-04-21-14-25-320x142.jpg 320w" sizes="(max-width: 545px) 100vw, 545px" /><p id="caption-attachment-2516" class="wp-caption-text">php.iniの編集（エックスサーバー）</p></div>
<p>ドメインごとに異なる設定が可能です。</p>
<p>直接ファイルを編集する場合はドメインのxserver_phpフォルダにあります。</p>
<p>設定を間違えた場合は「php.ini設定初期化」からリセットすることができます。</p>
<div id="attachment_2517" style="width: 567px" class="wp-caption alignnone"><img decoding="async" aria-describedby="caption-attachment-2517" src="https://php1st.com/wp-content/uploads/2018/07/2018-07-04-21-16-32.jpg" alt="php.ini設定のリセット" width="557" height="164" class="size-full wp-image-2517" srcset="https://php1st.com/wp-content/uploads/2018/07/2018-07-04-21-16-32.jpg 557w, https://php1st.com/wp-content/uploads/2018/07/2018-07-04-21-16-32-300x88.jpg 300w, https://php1st.com/wp-content/uploads/2018/07/2018-07-04-21-16-32-320x94.jpg 320w" sizes="(max-width: 557px) 100vw, 557px" /><p id="caption-attachment-2517" class="wp-caption-text">php.ini設定のリセット</p></div>
<h3>さくらインターネットの場合</h3>
<p>さくらインターネットではサーバコントロールパネルの「PHP設定の編集」から設定を変更できます。最初は空なので、追加したい項目（ディレクティブ）のみを記述していくスタイルです。</p>
<div id="attachment_2518" style="width: 529px" class="wp-caption alignnone"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2518" src="https://php1st.com/wp-content/uploads/2018/07/2018-07-04-21-18-26.jpg" alt="PHP設定の編集（さくらインターネット）" width="519" height="262" class="size-full wp-image-2518" srcset="https://php1st.com/wp-content/uploads/2018/07/2018-07-04-21-18-26.jpg 519w, https://php1st.com/wp-content/uploads/2018/07/2018-07-04-21-18-26-300x151.jpg 300w, https://php1st.com/wp-content/uploads/2018/07/2018-07-04-21-18-26-320x162.jpg 320w" sizes="auto, (max-width: 519px) 100vw, 519px" /><p id="caption-attachment-2518" class="wp-caption-text">PHP設定の編集（さくらインターネット）</p></div>
<p>全ドメイン共通の設定になります。</p>
<p>直接ファイルを編集する場合はwwwディレクトリ直下（/home/ユーザー名/www/php.ini）にあります。</p>
<h3>ロリポップの場合</h3>
<p>ロリポップではユーザー専用ページの「サーバーの管理・設定」‐「PHP設定」メニューから設定できます。</p>
<p>ドメインを選んで「設定」ボタンをクリックすると設定画面が開きますが、モジュール版では設定できないのでCGI版に変更する必要があります。</p>
<h2>XAMPPの場合</h2>
<p>ローカル環境でPHPを実行するXAMPPではPHPフォルダにphp.iniが存在します。エディタで開いて変更することができます。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>「error_reporting 32767」とは</title>
		<link>https://php1st.com/2351</link>
		
		<dc:creator><![CDATA[西沢直木]]></dc:creator>
		<pubDate>Fri, 28 Oct 2016 02:46:24 +0000</pubDate>
				<category><![CDATA[PHP全般]]></category>
		<guid isPermaLink="false">https://php1st.com/?p=2351</guid>

					<description><![CDATA[「error_reporting 32767」とか「error_reporting 32759」のようなコードは何かの暗号のようですが、実は「error_reporting(E_ALL)」や「error_reportin [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>「error_reporting 32767」とか「error_reporting 32759」のようなコードは何かの暗号のようですが、実は「error_reporting(E_ALL)」や「error_reporting(E_ALL &#038; ~E_NOTICE)」と同じことです。<span class="stro">定数E_ALLを数値にすると32767</span>だということです。</p>
<p>主なエラー定数と数値は次のとおりです。</p>
<ul>
<li>32767：E_ALL</li>
<li>2048：E_STRICT</li>
<li>8：E_NOTICE</li>
<li>4：E_PARSE</li>
<li>1：E_ERROR</li>
</ul>
<p>この数値はPHPのバージョンによって異なる場合があるので注意が必要です。詳しくは、以下のページをご覧ください。</p>
<p><a href="http://php.net/manual/ja/errorfunc.constants.php" target="_blank">PHPマニュアル：エラー処理／定義済み定数</a></p>
<h2>E_ALLの代わりに32767が使われる理由</h2>
<p>E_ALLの代わりに32767が使われる理由の1つは.htaccessです。</p>
<p>ホームページ（Webアプリケーション）の動作設定を記述できる<span class="stro">.htaccessでは、E_ALLのような定数は使えません</span>。つまり、次のような記述は反映されません。</p>
<pre class="brush: php; gutter: false; title: .htaccessでは使えない記述; notranslate">
php_value error_reporting E_ALL
</pre>
<p>そのため、E_ALLなどの定数の代わりに次のように<span class="stro">数値で指定する</span>必要があります。</p>
<pre class="brush: php; gutter: false; title: .htaccessでは定数の代わりに数値で指定する; notranslate">
php_value error_reporting 32767
</pre>
<p>同じように、NOTICE以外の全エラーを表示したい場合は、E_ALL &#038; ~E_NOTICEではなく「error_reporting 32759」のように指定します。32759はE_ALLの32767からE_NOTICEの8を引いた数値です。</p>
<pre class="brush: php; gutter: false; title: NOTICE以外を表示する設定; notranslate">
php_value error_reporting 32759
</pre>
<h2>現在の環境での定数値を調べる方法</h2>
<p>これらの定数値はバージョンによって異なります。</p>
<blockquote><p> E_ALLは、PHP 5.4.x では 32767、 PHP 5.3.x では 30719、 PHP 5.2.x では 6143、 それより前のバージョンでは 2047 でした。 </p></blockquote>
<p>（<a href="http://php.net/manual/ja/errorfunc.constants.php" target="_blank">PHPマニュアル：エラー処理／定義済み定数</a>より引用）</p>
<p>.htaccessに設定を記述する前に現在の環境での定数値をチェックするには、次のように定数を出力してみるとよいでしょう。</p>
<pre class="brush: php; gutter: false; title: 定数値を確認する; notranslate">
&lt;?php
echo E_ALL &amp; ~E_NOTICE;
?&gt;
</pre>
<div class="list-title">実行結果</div>
<div class="res">32759</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>mb_substrで取得した文字列が文字化けするとき</title>
		<link>https://php1st.com/2323</link>
		
		<dc:creator><![CDATA[西沢直木]]></dc:creator>
		<pubDate>Wed, 26 Oct 2016 07:06:04 +0000</pubDate>
				<category><![CDATA[PHP全般]]></category>
		<guid isPermaLink="false">https://php1st.com/?p=2323</guid>

					<description><![CDATA[PHP関数のmb_substrで取得した文字列が文字化けしている場合、文字コードが正しく設定されていないことが原因かもしれません。たとえば、次の例では、「プログラミング」という文字だけを取得しようとしています。 &#60; [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>PHP関数のmb_substrで取得した文字列が文字化けしている場合、<span class="stro">文字コードが正しく設定されていない</span>ことが原因かもしれません。たとえば、次の例では、「プログラミング」という文字だけを取得しようとしています。</p>
<pre class="brush: php; gutter: false; title: mb_substrで文字列の一部を取得しているが…; notranslate">
&lt;?php
$temp = &quot;PHPプログラミングの教科書&quot;;
echo mb_substr($temp, 3, 7);
?&gt;
</pre>
<p>文字コードが正しく設定されていないと実行結果は文字化けします。</p>
<div class="list-title">実行結果（文字化けしている）</div>
<p><img loading="lazy" decoding="async" src="https://php1st.com/wp-content/uploads/2016/10/2016-10-26-15-45-45.jpg" alt="mb_substrの実行結果が文字化けする" width="345" height="38" class="alignnone size-full wp-image-2324" srcset="https://php1st.com/wp-content/uploads/2016/10/2016-10-26-15-45-45.jpg 345w, https://php1st.com/wp-content/uploads/2016/10/2016-10-26-15-45-45-300x33.jpg 300w" sizes="auto, (max-width: 345px) 100vw, 345px" /></p>
<h2>文字化けの回避方法</h2>
<p>文字化けを解消するために文字コードを設定する方法はいくつかあります。php.iniで設定できれば理想的ですが、とりあえず現在のPHPスクリプトの文字化けを回避するには、次のように<span class="stro">mb_internal_encoding関数</span>を使って指定する方法があります。</p>
<pre class="brush: php; gutter: false; highlight: [2]; title: mb_internal_encodingで文字コードを指定; notranslate">
&lt;?php
mb_internal_encoding(&quot;UTF-8&quot;);
$temp = &quot;PHPプログラミングの教科書&quot;;
echo mb_substr($temp, 3, 7);
?&gt;
</pre>
<p>これで、文字化けは直るはずです。</p>
<div class="list-title">実行結果</div>
<div class="res">プログラミング</div>
<h2>文字コードの設定場所</h2>
<p>上記のように個別のPHPスクリプトで文字コードを設定するのは実用的ではありません。次のような方法で設定しておきましょう。レンタルサーバーによって可能な作業が異なるので、いくつかのパターンを知っておいた方が良いです。</p>
<ul>
<li>php.iniの「mbstring.internal_encoding」を編集する</li>
<li>.htaccessに設定を追加する</li>
<li>レンタルサーバーの「PHP設定」メニューを使う</li>
</ul>
<p>必ずしもphp.iniを編集できるとは限らないので、以下、.htaccessに設定を追加する例を紹介します。</p>
<pre class="brush: php; gutter: false; title: .htaccessで内部エンコーディングを設定する; notranslate">
php_value mbstring.internal_encoding UTF-8
</pre>
<p>このコードを.htaccessに記述して、動作中のアプリケーションのルートフォルダに置けば、下の階層にあるPHPスクリプトにも反映されます。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PHPの独学に便利なオンライン学習プラットフォーム「udemy」</title>
		<link>https://php1st.com/2243</link>
		
		<dc:creator><![CDATA[西沢直木]]></dc:creator>
		<pubDate>Wed, 19 Oct 2016 06:05:36 +0000</pubDate>
				<category><![CDATA[PHP全般]]></category>
		<guid isPermaLink="false">https://php1st.com/?p=2243</guid>

					<description><![CDATA[PHPを独学でマスターしようと思ったら分厚い本と格闘するのが定番ですが、なかなか続かないかもしれません。 なにしろ、眠くなりますよね。私もそうですが、難しそうな本を1ページずつ読んでいくのは忍耐力が問われます。 そんな方 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>PHPを独学でマスターしようと思ったら分厚い本と格闘するのが定番ですが、なかなか続かないかもしれません。</p>
<p>なにしろ、眠くなりますよね。私もそうですが、難しそうな本を1ページずつ読んでいくのは忍耐力が問われます。</p>
<p>そんな方には<span class="stro">オンライン学習プラットフォーム「udemy」（ユーデミー）</span>です。<span class="stro">動画で学べる</span>サービスで、PHPなどのプログラミング関連講座もたくさんあります。</p>
<p>実際にPHP関連講座を探してみると「2日でできる　はじめてのPHP超入門」とか「非エンジニアでも学べるPHP入門」など、ゼロからPHPの独学にチャレンジしたい方にもピッタリな講座が見つかります。</p>
<p>分厚い本を持ち歩かずに済むのは良いですね。PHPの独学がうまくいかない方は試してみてはいかがでしょうか。</p>
<div style="text-align:center;font-weight:bold;font-size:24px;margin-bottom:50px;">
<a href="https://px.a8.net/svt/ejp?a8mat=2NV790+60Q28I+3L4M+661TT" target="_blank"><br />
<img loading="lazy" decoding="async" border="0" width="300" height="250" alt="" src="https://www21.a8.net/svt/bgt?aid=161019252364&#038;wid=013&#038;eno=01&#038;mid=s00000016735001036000&#038;mc=1"></a><br />
<img loading="lazy" decoding="async" border="0" width="1" height="1" src="https://www17.a8.net/0.gif?a8mat=2NV790+60Q28I+3L4M+661TT" alt=""><br />
<span style="font-size:24px;"><a href="https://px.a8.net/svt/ejp?a8mat=2NV790+60Q28I+3L4M+5YRHE" target="_blank">世界最大級のオンライン学習サイトUdemy</a><br />
<img loading="lazy" decoding="async" border="0" width="1" height="1" src="https://www19.a8.net/0.gif?a8mat=2NV790+60Q28I+3L4M+5YRHE" alt=""></span>
</div>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
