PHPの短いタグを有効にする方法は?


324

LinuxサーバーにWebアプリケーションがあります。 <?

このアプリケーションをWindows環境にコピーする必要があり、SQLステートメントのレンダリングが異なることを除いて、すべてが正常に機能しています。これは、スクリプトが始まるとしなければならない場合、私は知らない<?php代わりに<?私が可能にするためにどこからかわからないので、<?からPHP.ini、私はそれを変更して<?php

これらの2つのステートメントは同じ意味を持っ<?ているはずですが、アプリケーションが完全に同じであることを確認するために、それをテストする必要があります。これにより、別の可能性を排除できます。

ありがとう



ただし、ストーリーはまだ発展途上です。乞うご期待。:)
ビショップ

回答:


559

セットする

short_open_tag=On

php.ini

そして、Apacheサーバーを再起動します。


54
上のphp_flagのshort_open_tagが:PHPがApacheモジュールとして実行する場合は、.htaccessファイルでそれを設定することができます
アルバロ・ゴンサレス

12
最もリリーキー/etc/php5/apache2/php.ini
ベンジャミン

@ pinouchon、seedegはWindowsに移行すると書いていますが、あなたのコメントが私を助けてくれます:)
Line

7
使用php --iniロードされたコンフィギュレーションファイルを検索する(ロード設定ファイル:/etc/php5/cli/php.ini)
のWietse

Windowsでxamppを使用している場合は、XAMPPコントロールパネルを開き、[設定]ボタンをクリックして、PHP(php.ini)オプションに移動してください。
Praful Rajput 14年

80

これは、php.iniでshort_open_tagを有効にすることで実行できます。

short_open_tag = on

php.iniにアクセスできない場合は、.htaccessファイルを使用してそれらを有効にすることができますが、共有ホスティングを使用している場合は、ホスティング会社がこれを無効にしている可能性があります。

php_value short_open_tag 1

PHP 5.4以降、<?= ... ?> short_open_tagsは悪い習慣であると考える人にとっては、設定に関係なく、あらゆる場所shorttagがサポートされるため、サーバーで設定を制御できれば、それらを使用しない理由はありません。このリンクでも述べられています:short_open_tag


5
短いオープンタグは必ずしも悪い習慣ではありません(ここではオープンマインドを維持しようとしています)。PHP5.4でそれらのデフォルトのサポートを提供することを決定しましたが、それらを使用する正当化を提供していません。それらを使用すると、後で望ましくない依存関係が作成されるか、XMLとの混乱が生じる可能性があります。ここではいくつかの良い議論:stackoverflow.com/questions/200640/...
イアン・ルイス

1
イアン。ここでは、<? echo $var ?>短いオープンタグではなく、<?= $var ?>短いオープンタグについて説明します。Afaik XMLは影響を受けません。
RJD22 2013

PHPコーディングテストがあり、<?=ショートタグが使用されているサブミッションをときどき受け取ります。残念ながら、このスタイルがあらゆる場所で使用されているという仮定は少し単純であり、ASPのダイエットで育った開発者からしばしば生じます。明らかにそれは利用可能ですが、その使用はマイクロ最適化であり、可搬性の理由で失敗するのは残念です。
Ian Lewis

6
@IanLewis同意しない。PHPの短いタグはASPとは関係ありません。あなたが使いたいと思う最もよい理由<?= はテンプレート化のためであり、それはかなり有効なものだと私は思います。口ひげのような他のテンプレート言語も短いシンプルなタグを使用します{{var}}。PHPはテンプレート言語としてよく使用され、インラインHTMLに<?php echo $var ?>比べて実行する必要があることは非常に醜いです<?=$var?>
RJD22 2013

それは興味深い議論であり、非常に主観的になります。美しいコードが、固有の醜さを少し示すコードよりも必ずしも優れているとは思いません。私の見解では、<?= $ var?>バージョンは、よりオープンでより長いバージョンよりも、混雑し、読みにくくなっています。ASPとのリンクは、私が知っている何人かの開発者がプロ​​ンプトなしで同じリンクを作成するので、一般的な認識でなければなりません。
Ian Lewis

19

これを行うには、php.iniでshort_open_tagを有効にします。

1. php.iniファイルを見つけるには、コメント行で次を実行します。

 php --ini

あなたはこのようなものを得るでしょう、

Configuration File (php.ini) Path: /etc
Loaded Configuration File:         /etc/php.ini
Scan for additional .ini files in: /etc/php.d
Additional .ini files parsed:      /etc/php.d/curl.ini,
/etc/php.d/fileinfo.ini,
/etc/php.d/gd.ini,
/etc/php.d/json.ini,
/etc/php.d/mcrypt.ini,
/etc/php.d/mysql.ini,
/etc/php.d/mysqli.ini,
/etc/php.d/pdo.ini,
/etc/php.d/pdo_mysql.ini,
/etc/php.d/pdo_sqlite.ini,
/etc/php.d/phar.ini,
/etc/php.d/sqlite3.ini,
/etc/php.d/zip.ini

コメント出力の2行目を参照してください。ファイルは上記のパスにあります。

2.php.iniファイルを開き、を見つけますshort_open_tag。デフォルトではにoff変更されていonます。

3.サーバーを再起動し、このコメントを実行します

service httpd restart

ありがとう


18

UbuntuのVagrantインストールスクリプトから開くように短いタグを設定するには:

sed -i "s/short_open_tag = .*/short_open_tag = On/" /etc/php5/apache2/php.ini

12

上記のすべての回答は部分的に正しいだけです。実際には、21世紀のすべてのPHPアプリにFastCGIプロセスマネージャー(php-fpm)があるため、php-info()をtest.phpスクリプトに追加して、php.iniの正しいパスを確認すると、

Go to php.ini and set short_open_tag = On

重要:これを機能させるには、php-fpmプロセスを再起動する必要があります。

sudo service php-fpm restart

そして最後にnginx / httpサーバーを再起動します

sudo service nginx restart

2
私の場合:sudo service php7.0-fpm restart
Sampath Perera

sudo service php-fpm restartは、ボックスにインストールしたPHPのデフォルトバージョンで機能します。ただし、複数のバージョンがある場合は、参照しているバージョンを指定する必要があります
Eddy Ferreira

1
nginxを再起動するだけではうまくいきませんでした。実際、phpini()関数は引き続きshort_open_tagをOffとして表示していました。サーバーを再起動したところ、うまくいきました。抜本的なものですが、なぜ研究よりも速いのです...
Fran Marzoa

10

あなたはshort_open_tagsをオンにする必要があります。

short_open_tag = On

10

それと同じくらい簡単に、次の手順に従います。

  1. php.iniファイルに移動
  2. short_open_tagそれを見つけて設定するon

    short_open_tag = On
  3. サーバーを再起動します


9

CentOS 6(Centos 7でもテスト済み)では、php-fpmの/etc/php.iniにshort_open_tagを設定できません。エラーが発生します:

ERROR: [/etc/php.ini:159] unknown entry 'short_open_tag'
ERROR: Unable to include /etc/php.ini from /etc/php-fpm.conf at line 159
ERROR: failed to load configuration file '/etc/php-fpm.conf'
ERROR: FPM initialization failed

/etc/php-fpm.d/www.confにあるサイトの構成を編集して、ファイルの最後に書き込む必要があります。

php_value[short_open_tag] =  On

Debian Jessieでこれを行わなければなりませんでした。これは、実際にはすべてのPHP5-FPMインストールに適用される可能性があります。
Bertrand

7

で使用Ubuntuしている場合Apache+php5、現在のバージョンでは、2つの場所に変更する必要がありますshort_open_tag = On

  1. /etc/php5/apache2/php.ini -これはWebサーバー(Apache)を介してロードされたページ用です
  2. /etc/php5/cli/php.ini-この設定は、次のようにコマンドラインからphpファイルを起動するときに使用されますphp yourscript.php。-手動で実行するか、サーバー上で直接phpがphpファイルを実行します。

6

php.iniファイルを編集した場合は、php.iniへの編集を有効にするために、サービス(apache2など)を必ず再起動してください。


5

Wamp Serverユーザーの場合、より簡単な方法があります。WampServerアイコンを1回(左)クリックして設定を有効にし、PHP-> PHP設定->短いオープンタグを選択します。少し待つと、WampServerが自動的にPHPとそのWebサービスを再起動します。

もともと:http : //osticket.com/forums/showthread.php?t=3149


5
; Default Value: On
; Development Value: Off
; Production Value: Off
; http://php.net/short-open-tag
;short_open_tag=Off   <--Comment this out
; XAMPP for Linux is currently old fashioned
short_open_tag = On   <--Uncomment this

1

xamppを使用している場合、php.iniファイルでshort_open_tagが2回言及されていることがわかります。2つ目を有効にして、short_open_tag = Onにします。最初のものはコメント化されており、コメントを外して編集したくなるかもしれませんが、2番目のshort_open_tagによって上書きされます


1

Windowsでxamppを使用している場合は、以下を実行してください。

  1. XAMPPコントロールパネルを開きます。
  2. CONFIGボタンをクリックします。
  3. PHP(php.ini)オプションに移動します。

ctrl + fユーティリティを使用してshort_open_tagを見つける

あなたが見つかります ;short_open_tag

行からセミコロン(;)を削除してください。

そしてそれを保ちます short_open_tag = on

最後に、Apacheサーバーを再起動します


0

php-fpmを使用して特定のドメインのshort_open_tagを有効にするには、以下を編集する必要があります。

/etc/php5/fpm/pool.d/xxxxxxxxxx.conf

ここで、xxxxxはドメインのソケット番号です。

そして追加:php_value [short_open_tag] = On


0
sed -i "s/short_open_tag = .*/short_open_tag = On/" /etc/php/7.2/apache2/php.ini

これはubuntu 16のphp7.2で機能します。構成ファイルが格納されているディレクトリが変更されていますが、Bradley Floodによる上記と同じ回答です。

また、php文字列のバージョンを変更して、現在インストールされているバージョンと一致させることもできます。



-2

私はaws centos 7インスタンスとphp7でshort_open_tagをオフからオンに変更しました(PHP 7.0.33(cli)(built:Dec 6 2018 22:30:44)(NTS))、しかしそれはphp情報ページを反映していませんそしてコード。だから私はかもしれないドキュメントを参照して私のケースの解決策を見つけます。asp_tagsとしてshort_open_tagの後に追加の行を追加します=再起動後、Apacheそれはコードで動作し、出力を正しく行います

php.iniファイル

engine = On

; This directive determines whether or not PHP will recognize code between
; <? and ?> tags as PHP source which should be processed as such. It is
; generally recommended that <?php and ?> should be used and that this feature
; should be disabled, as enabling it may result in issues when generating XML
; documents, however this remains supported for backward compatibility reasons.
; Note that this directive does not control the <?= shorthand tag, which can be
; used regardless of this directive. 
; Default Value: On   
; Development Value: Off     
; Production Value: Off  
; http://php.net/short-open-tag

short_open_tag = On

; Allow ASP-style <% %> tags   
; http://php.net/asp-tags
asp_tags = On

-5

設定するasp_tags = Onと、short_open_tag = On両方のファイルで\apache\Apache2.2.21\bin\php.ini\bin\php\php5.3.8\php.ini して、Apacheサーバを再起動します。


6
asp_tags?何のために?
常識

1
aspはおそらくタイプミスです。コミュニティが@kalにほんの少しの慈悲を示すことができないのはなぜですか?
n8bar 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.