PHP kısa etiketleri nasıl etkinleştirilir?


324

Linux sunucusunda bir web uygulamam var. <?

Bu uygulamayı bir Windows ortamına kopyalamak gerekiyordu ve bir SQL deyimi farklı işleniyor dışında her şey iyi çalışıyor. Bu komut ile başlayan ile ilgisi olup olmadığını bilmiyorum <?phpyerine <?ben etkinleştirmek için yerden bilmiyorum çünkü <?gelen PHP.iniben olarak değiştirdim böylece<?php

Bu 2 ifadenin aynı anlama geldiğini biliyorum, ancak <?uygulamanın tam olarak aynı olduğundan emin olmak için test etmem gerekiyor . Bu şekilde başka bir olasılığı ortadan kaldırabilirim.

Teşekkürler



Ancak hikaye hala gelişiyor . Bizi izlemeye devam edin. :)
piskopos

Yanıtlar:


559

Ayarlamak

short_open_tag=On

içinde php.ini

Ve Apache sunucunuzu yeniden başlatın.


54
PHP Apache modülü olarak çalışıyorsa, bunu bir .htaccess dosyasında da ayarlayabilirsiniz: php_flag short_open_tag on
Álvaro González

12
Çoğu lileky/etc/php5/apache2/php.ini
Benjamin Crouzier

@pinouchon, seedeg Windows'a taşındığını yazdı, ancak Yorumunuz bana yardımcı oluyor :)
Line

7
php --iniYüklenen yapılandırma dosyasını bulmak için kullanın (Yüklenen Yapılandırma Dosyası: /etc/php5/cli/php.ini)
Wietse

Windows'ta xampp kullanıyorsanız, lütfen XAMPP kontrol panelini açın, CONFIG düğmesine tıklayın ve PHP (php.ini) seçeneğine gidin.
Praful Rajput

80

Bu sağlayarak yapılabilir short_open_tag içinde php.ini :

short_open_tag = on

Eğer php.ini erişiminiz yoksa onları .htaccess dosyası üzerinden etkinleştirmeyi deneyebilirsiniz, ancak paylaşılan barındırma kullanıyorsanız barındırma şirketi bunu devre dışı bırakabilir :

php_value short_open_tag 1

Short_open_tags php 5.4 <?= ... ?>sürümünden itibaren kötü uygulama olduğunu düşünen insanlar için, ayarlardan bağımsız olarak shorttag her yerde desteklenecektir , bu nedenle sunucudaki ayarları kontrol edebiliyorsanız kullanmamanız için hiçbir neden yoktur. Bu bağlantıda ayrıca söyledi: short_open_tag


5
Kısa açık etiketler mutlaka kötü bir uygulama değildir (burada açık fikirli olmaya çalışıyorum) ama Rasmus ve ark. PHP5.4'te kendileri için varsayılan destek sağlamaya karar verdiklerinde bunları kullanmak için gerekçe sağlanmaz. Bunları kullanmak, daha sonra istenmeyen veya XML ile karışıklığa neden olan bir bağımlılık yaratabilir. Burada bazı iyi tartışmalar: stackoverflow.com/questions/200640/…
Ian Lewis

1
Ian. <? echo $var ?>Kısa açık etiketten değil, <?= $var ?>kısa açık etiketten bahsediyoruz . Afaik XML etkilenmemelidir.
RJD22

Bir PHP kodlama testimiz var ve zaman zaman <? = Kısa etiketin kullanıldığı gönderiler alıyoruz. Ne yazık ki bu tarzın her yerde kullanımda olduğu varsayımı biraz naiftir ve genellikle ASP diyetinde yetiştirilen geliştiricilerden gelir. Açıkçası mevcut ama kullanımı bir mikro optimizasyon ve utanç verici olan taşınabilirlik zeminlerinde başarısız olacaktır.
Ian Lewis

6
@IanLewis Kabul etmiyorum. PHP kısa etiketi ASP ile ilgisi yoktur. <?= Kullanmak istemenizin en iyi nedeni şablonlamadır ve bence oldukça geçerli. Bıyık gibi diğer cazip diller de kısa basit etiketler kullanır {{var}}. PHP genellikle şablonlama dili olarak kullanılır ve yapması gereken satır içi HTML'den <?php echo $var ?>çok daha çirkin olur <?=$var?>.
RJD22

Bu ilginç bir tartışma ve son derece öznel hale geliyor, güzel kod mutlaka doğal çirkinlik biraz gösteren kod daha iyi olduğuna inanmıyorum. Buradaki kendi görüşüm <? = $ Var?> Sürümünün daha açık, ancak daha uzun sürüme göre çok daha kalabalık ve daha az okunabilir görünüyor. ASP ile bağlantı ortak bir algı olmalıdır sonra birkaç geliştiriciler istemeden aynı bağlantı yapmak biliyorum.
Ian Lewis

19

Bu php.ini dosyasında short_open_tag etkinleştirilerek yapılabilir:

Php.ini dosyasını bulmak için yorum satırında çalıştırın

 php --ini

böyle bir şey alacaksın,

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

Yorum çıkışından 2. satıra bakın. Dosya belirtilen yolda olacaktır.

Php.ini dosyasını açın ve bulun short_open_tag. Varsayılan olarak bunu offdeğiştirir on.

Sunucuyu yeniden başlatın, bu yorumu yürütün

service httpd restart

Teşekkürler


18

Ubuntu'da bir Vagrant yükleme komut dosyasından açılacak kısa etiketleri ayarlamak için:

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

12

Yukarıdaki tüm cevapların sadece kısmen doğru olduğunu görebiliyorum. Gerçekte tüm 21st Century PHP uygulamaları FastCGI Process Manager'a (php-fpm) sahip olacak, bu yüzden test.php betiğinize php-info () ekledikten ve php.ini için doğru yolu kontrol ettikten sonra

Go to php.ini and set short_open_tag = On

ÖNEMLİ: Bu durumda çalışabilmesi için php-fpm işleminizi yeniden başlatmalısınız!

sudo service php-fpm restart

ve son olarak nginx / http sunucunuzu yeniden başlatın

sudo service nginx restart

2
Benim durumumda: sudo service php7.0-fpm restart
Sampath Perera

sudo hizmet php-fpm yeniden başlatma size kastediyorsun sürümünü belirtmelisiniz bu durumda birden çok sürümü sürece hesap kutuyu yüklemek zorunda PHP herhangi varsayılan sürümü için çalışacak
Eddy Ferreira

1
Nginx'i yeniden başlatmak benim için sadece işe yaramadı. Aslında, phpini () işlevi, short_open_tag öğesini Kapalı olarak göstermeye devam etti. Sadece sunucuyu yeniden başlattım ve işe yaradı. Bir çeşit sert, ama neden hala araştırmadan daha hızlı ...
Fran Marzoa

10

short_open_tags özelliğini açmanız gerekir.

short_open_tag = On

10

Bu kadar basit, aşağıdaki adımları izleyin:

  1. php.iniDosyaya git
  2. Bulun short_open_tagve ayarlayınon

    short_open_tag = On
  3. Sunucuyu yeniden başlatın


9

CentOS 6'da (Centos 7'de de test edilmiştir), phet-fpm için /etc/php.ini dosyasında short_open_tag öğesini ayarlayamazsınız. Hata alacaksınız:

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

Siteniz için /etc/php-fpm.d/www.conf dosyasında bulabileceğiniz yapılandırmayı düzenlemelisiniz Ve dosyanın sonuna yazmalısınız:

php_value[short_open_tag] =  On

Bir Debian Jessie üzerinde bunu yapmak zorunda kaldı. Bu aslında tüm PHP5-FPM yüklemeleri için geçerli olabilir.
Bertrand

7

Eğer kullanıyorsanız Ubuntuile Apache+php5, daha sonra şimdiki sürümlerinde size değişikliğine ihtiyaç 2 yer vardırshort_open_tag = On

  1. /etc/php5/apache2/php.ini - bu, web sunucunuz aracılığıyla yüklenen sayfalar içindir (Apache)
  2. /etc/php5/cli/php.ini- Bu yapılandırma php dosyalarınızı komut satırından başlattığınızda kullanılır, örneğin: php yourscript.php- manuel olarak veya cronjob çalıştırılan php dosyalarını doğrudan sunucuda gider.

6

php.ini dosyanızı düzenlerseniz, php.ini düzenlemelerinin etkili olması için hizmetinizi (apache2 vb.) yeniden başlatmayı unutmayın.


5

Wamp Server kullanıcıları için daha kolay bir yol vardır: Bu ayarı WampServer simgesine bir kez (solda) tıklayarak etkinleştirebilirsiniz, PHP -> PHP ayarları -> kısa açık etiketi seçin. Bir saniye bekleyin, ardından WampServer PHP'nizi ve web hizmetini otomatik olarak yeniden başlatır.

aslen: 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 kullanıyorsanız, php.ini dosyasında iki kez short_open_tag belirtildiğini göreceksiniz. İkincisini etkinleştirmek için short_open_tag = Açık. Birincisi yorumlanır ve siz onu rahatsız edip düzenlemeye cazip gelebilirsiniz, ancak ikinci bir short_open_tag


1

Windows'ta xampp kullanıyorsanız lütfen aşağıdakileri yapın

  1. XAMPP kontrol panelini açın.
  2. CONFIG düğmesine tıklayın.
  3. PHP (php.ini) seçeneğine gidin.

Ctrl + f yardımcı programını kullanarak short_open_tag öğesini bulun

Sen bulacaksın ;short_open_tag

noktalı virgül (;) satırdan kaldırın .

ve öyle tut short_open_tag = on

Son olarak, Apache sunucunuzu yeniden başlatın


0

Php-fpm içeren belirli bir alan için short_open_tag özelliğini etkinleştirmek için şunları düzenlemeniz gerekir:

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

Burada xxxxx, alanın soket numarasıdır.

Ve ekleyin: php_value [short_open_tag] = Açık


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

Bu, ubuntu 16 üzerinde php7.2'de çalışır, yukarıdaki yapılandırma dosyasının saklandığı dizin değişse de Bradley Flood tarafından yukarıdakiyle aynı cevaptır.

Ayrıca php dizesindeki sürümü şu anda yüklü sürümünüzle eşleşecek şekilde değiştirebilirsiniz.



-2

Ben aws centos 7 örneği ve php7 (PHP 7.0.33 (cli) (inşa: 6 Aralık 2018 22:30:44) (NTS) üzerinde short_open_tag Kapalı olarak Açık olarak değiştirdim, ancak php bilgi sayfasını yansıtmıyor ve kod. Bu yüzden mayıs belgelerine başvurabilir ve davamda bir çözüm bulabilirim. Short_open_tag sonra asp_tags = Açık sonra ek bir satır ekleyin Apache yeniden başlattıktan sonra Kod üzerinde çalışır ve ben doğru çıkış gidin

php.ini dosyası

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

Set asp_tags = Onve short_open_tag = Onher iki dosya \apache\Apache2.2.21\bin\php.inive \bin\php\php5.3.8\php.ini ardından apache sunucusunu yeniden başlatın.


6
asp_tags? ne için?
Ortak Duygunuz

1
asp büyük olasılıkla bir yazım hatasıdır. Topluluk neden @kal için biraz merhamet göstermiyor?
n8bar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.