投稿

9月, 2013の投稿を表示しています

PHPの "if():" タイプの注意点

PHPでのif文は3通りの書き方がある。 1つ目は、 if ( $check ) { echo 'Good!'; } else { echo 'Bad.'; } の様に中括弧を使う方法。 2つ目は、 <?php if ( $check ) echo 'Good!'; else echo 'Bad.'; の様に括弧を省略する方法。この場合  有効な行は   if   の次の行の1行だけ  という事に注意しましょう。 そして3つ目が、 <?php if ( $check ) : echo 'Good!'; else : echo 'Bad.'; endif; の様に、 if(): 〜 endif; のパターン。 WordPress等ではお馴染みですね。開始と終わりがわかりやすいのでHTMLと混在したファイルなどでよく使用されます。 このパターンを使う場合注意点が  2つ  あり、1つ目は、 else if :   の様にelseとifを分割してはいけない、  という事。 2つ目は、 elseifをネストする場合、中のif文も   if() :   形にしなければならない、  という事。 例えば、 <?php $a = true; $b = 5; $c = 'aaa'; if ($a) : if ($b == 5) echo 'OK'; elseif ($c == 'aaa') : echo 'aaa'; endif; この様な書き方は PHP Parse error: syntax error, unexpected ':' in /home/user/dev/tmp/test.php on line 8 と、エラー

Apache2(>=2.4)のVirtualHost設定でちょい嵌った

Ubuntuのapt-getで保留が気になったので、なんの考えなしに sudo apt-get dist-upgrade してしまったのが事の始まり。 今まで使っていたApache2.2系が**2.4.6**になってしまった。 バーチャルホストで dev.exampleで/var/www/example/ を読みに行くように設定していたはずが、なぜか /var/www/index.php を読む。 つまり、バーチャルホストの設定ファイルが読み込まれていない。 とりあえずapache2を再読み込み、再起動してみたら、 NameVirtualHost has no effect and will be removed in the next release なるエラーが。調べると2.4以降だと NameVirtualHost は廃止されたようなので、この行を丸っと削除。 次に/etc/apache2/sites-enabled/内のリンクを一旦削除し、/etc/apache2/sites-available/で、 sudo a2ensite dev.example すると、**ERROR: Site dev.example does not exist!** とでた。 え? あるじゃん!? ここで少し混乱(いやかなり) 散々ググった挙句(日本語情報は皆無)、 serverfault.comのこの記事 で事なきを得た。 cd /etc/apache2/sites-available sudo mv dev.example dev.example.conf sudo a2ensite dev.example.conf おっけ。 こんな微妙な仕様変更、やめて頂きたい限りである。。。