• ベストアンサー

<?php phpinfo(); ?>と<? phpinfo(); ?>の違い。

OpenPNE のインストールで色々調べており、以下のサイトで質問させて頂いております。 Fatal error: OpenPNE設置時のエラー に関して http://oshiete1.goo.ne.jp/qa2511321.html 色々調べており、PHP に関する問題では思っていますが、正直な所、PHP を触るのが初めてですので、初心に戻って PHP から調べています。 サーバは、さくらインターネットを借りており、基本的に apache,php 等は標準で動作しています(インストール作業はしていません)。 PHP の動作確認をしようと、 <? phpinfo(); ?> と書いたテキストファイルを作成してサーバにアップロードしました。 ファイル名は、test.php としました。 アップロード後、サーバにアクセス(test.php)すると白紙(真っ白)な状態です。ソースを確認すると<? phpinfo(); ?>が表示されます。ファイルは詠み込まれていると判断しました。 少し調べ所、 <? phpinfo(); ?>を<?php phpinfo(); ?>としたらどうでしょうかと言うアドバイスが有り、<?php phpinfo(); ?>と修正し、サーバにアップロードしら所、phpinfo のページを見ることが出来ました。 そこで質問なんですが<?php phpinfo(); ?>と<? phpinfo(); ?>は何が違うのでしょうか、サーバ側の設定でしょうか。 また、この違いが、OpenPNE のエラーと関係があるのでしゅか? アドバイスを頂ければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

サーバのphp.iniで設定されます short_open_tag という項目になります。 OpenPNEがshort open tag=offに対応しているかは知りませんが .htaccessが使えればユーザ側で設定を変えることは出来ます。

参考URL:
http://jp.php.net/manual/ja/ini.core.php#ini.short-open-tag
maruhyper
質問者

補足

こんにちは。 アドバスをありがとうございます。 php.ini を確認した所 short_open_tag = Off となっていました。 Off を On と書き換えましたが、<? phpinfo(); ?> だとページが表示されません。<?php phpinfo(); ?> は問題無く表示します。 作業手順としては、php.ini を開いて short_open_tag の項目で、Off を On と修正しました。修正後 php の再起動はしていません。php 必要に応じて起動すると理解していますが間違っているでしょうか。 他に何か足りないでしょうか、アドバイスを頂ければ幸いです。

その他の回答 (3)

  • Yeti21
  • ベストアンサー率47% (396/830)
回答No.4

php.iniを変更された後、Apache(で良いでしょうか?)を再起動されたでしょうか? もし、されていなければ再起動後に再度確認してみてください。

maruhyper
質問者

お礼

こんにちは。 アドバイスをありがとうございます。 再度、apache を再起動させた所、<? phpinfo(); ?> でも、phpinfo を開くことが出来ました。 apache の再起動が必要だったですね。勉強になりました。 これでこの質問は終了にさせて頂きます。 アドバイスをして頂いた皆様、ありがとうございました。

回答No.3

<?php は、PHPスクリプトの始まりを示します。スクリプトの実行エンジンは、<?php以降をPHPスクリプトとして解釈して実行します。 <?は、<?phpを省略した表現です。 PHPの設定によっては、省略した記法を許します。設定によっては許しません。maruhyperさんの環境では、省略を許容しないようになっているのでしょう。省略を許容しない設定では、<? phpinfo(); ?>はPHPスクリプトとはみなされないため、そのままHTMLソースに表示されます。 PHPの設定では、php.iniというファイルを使います。省略を許容するかは、php.iniの中のshort_open_tagという項目で設定します。 OpenPNEの方は、よく判りません。恐らく本件とは関係ないと思います。 Fatal error: Call to undefined function preg_match() in ... preg_matchは普通にインストールしたら使える関数です。undefinedなはずは無いんですが。サーバ環境がおかしいのかなとも思います。 以下のようなテスト用のスクリプトをサーバ上に置いて、ブラウザからたたいてみて、同じエラーがでるようならば、レンタルサーバの管理者に問合せた方がよいと思いますよ。 <?php if (preg_match("/ho.e/","fugahoge")) { echo "match"; } else { echo "unmatch"; } ?>

maruhyper
質問者

お礼

こんにちは。 適切なアドバイスをして頂きありがとうございました。 お礼のポイントをお付けすることが出来ず申し訳ありません。 アドバイスをして頂いたことで、OpenPNE の設置に関して、php 以外に私の全般的なスキル不足で、他にも原因が有ることが判明しました。 もっと調べて OpenPNE を設置出来るように努力いたしたいと思います。php の参考スクリプトはとても為になりました。

maruhyper
質問者

補足

こんにちは。 アドバスをありがとうございます。 php.ini に関しては、No1 で補足させて頂いた状況です。 <?php phpinfo(); ?>と<? phpinfo(); ?> の違いに関して、OpenPNE に関しては関係ないのではという件、了解いたしました。 <?php if (preg_match("/ho.e/","fugahoge")) { echo "match"; } else { echo "unmatch"; } ?> 上記スクリプトは試してみました。ファイルを実行した所、 match と帰ってきました。 この状態なら、php の動作に問題無いと判断して良いのでしょうか。

  • Yeti21
  • ベストアンサー率47% (396/830)
回答No.2

「<?」は「<?php」の短縮形ですね。 php.iniのshort_open_tagが有効になっ ている場合か、 PHPが--enable-short-tagsオプションでconfigureされている場合に使用できます。

maruhyper
質問者

補足

こんにちは。 アドバスをありがとうございます。 php.ini に関しては、No1 で補足させて頂いた状況です。 「<?」は「<?php」とのこと、勉強になりました。 インストールは、自身で行っていないので詳細が判りません。 引き続き何かアドバイスを頂ければ幸いです、

関連するQ&A