PHP शॉर्ट टैग कैसे सक्षम करें?


324

मेरे पास एक लिनक्स सर्वर पर एक वेब एप्लिकेशन है जो इसके साथ शुरू होता है <?

मुझे इस एप्लिकेशन को एक विंडोज़ वातावरण में कॉपी करने की आवश्यकता है और सब कुछ ठीक काम कर रहा है सिवाय इसके कि एक एसक्यूएल स्टेटमेंट को अलग तरीके से प्रस्तुत किया जा रहा है। पर यह स्क्रिप्ट के साथ शुरुआत के साथ क्या करना है मैं नहीं जानता कि <?phpबजाय <?क्योंकि मैं कहाँ से सक्षम करने के लिए पता नहीं है <?से PHP.iniतो मैं यह करने के लिए बदल<?php

मुझे पता है कि इन 2 कथनों का अर्थ समान होना चाहिए, लेकिन मुझे यह <?सुनिश्चित करने के लिए परीक्षण करना होगा कि आवेदन बिल्कुल समान है। इस तरह मैं एक और संभावना को खत्म कर सकता हूं।

धन्यवाद



हालांकि, कहानी अभी भी विकसित हो रही है । बने रहें। :)
बिशप

जवाबों:


559

सेट

short_open_tag=On

in php.ini

और अपना Apache सर्वर रीस्टार्ट करें।


54
यदि PHP अपाचे मॉड्यूल के रूप में चलता है, तो आप इसे एक .htaccess फ़ाइल में भी सेट कर सकते हैं: php_flag short_open_tag ऑन
González

12
सबसे अधिक lileky/etc/php5/apache2/php.ini
बेंजामिन क्राउज़ियर 19

@pinouchon, बीजेज ने लिखा है कि वह विंडोज के लिए आगे बढ़ता है, लेकिन आपकी टिप्पणी मेरी मदद करती है :)
लाइन

7
उपयोग php --iniलोड विन्यास फाइल का पता लगाने की (भरी हुई विन्यास फ़ाइल: /etc/php5/cli/php.ini)
Wietse

यदि आप विंडोज़ में xampp का उपयोग कर रहे हैं, तो कृपया XAMPP नियंत्रण कक्ष खोलें, CONFIG बटन पर क्लिक करें और PHP (php.ini) विकल्प पर जाएँ।
प्रफुल्ल राजपूत

80

यह php.ini में short_open_tag को सक्षम करके किया जा सकता है :

short_open_tag = on

यदि आपके पास php.ini तक पहुंच नहीं है, तो आप उन्हें .htaccess फ़ाइल को सक्षम करने का प्रयास कर सकते हैं, लेकिन संभव है कि यदि आप साझा होस्टिंग पर हैं तो होस्टिंग कंपनी इसे अक्षम कर सकती है:

php_value short_open_tag 1

लोगों के लिए यह सोचकर कि short_open_tags खराब अभ्यास हैं । php 5.4 के अनुसार <?= ... ?>शॉर्टटैग हर जगह पर समर्थित होगा , सेटिंग्स की परवाह किए बिना, इसलिए इसका कोई कारण नहीं है कि यदि आप सर्वर पर सेटिंग्स को नियंत्रित कर सकते हैं तो उनका उपयोग न करें। इस लिंक में भी कहा गया: short_open_tag


5
लघु खुले टैग जरूरी बुरा अभ्यास नहीं हैं (मैं यहां खुले दिमाग रखने की कोशिश कर रहा हूं) लेकिन सिर्फ रासमस एट अल। PHP5.4 में उनके लिए डिफ़ॉल्ट सहायता प्रदान करने का निर्णय लिया गया, उनका उपयोग करने का औचित्य प्रदान नहीं करता है। उनका उपयोग करना एक निर्भरता पैदा कर सकता है जो बाद में अवांछनीय है या एक्सएमएल के साथ भ्रम पैदा कर सकता है। यहाँ कुछ अच्छी चर्चा: stackoverflow.com/questions/200640/…
इयान लुईस

1
इयान। हम <? echo $var ?>शॉर्ट ओपन टैग के बारे में नहीं बल्कि शॉर्ट ओपन टैग के बारे में बात कर रहे हैं <?= $var ?>। Afaik XML प्रभावित नहीं होना चाहिए।
RJD22

हमारे पास एक PHP कोडिंग टेस्ट है और कभी-कभी सबमिशन मिलता है जहाँ <? = शॉर्ट टैग का उपयोग किया गया है। दुर्भाग्य से धारणा है कि यह शैली हर जगह उपयोग में है थोड़ा भोला है और अक्सर एएसपी के आहार पर लाया डेवलपर्स से आता है। स्पष्ट रूप से यह उपलब्ध है लेकिन इसका उपयोग एक माइक्रो-ऑप्टिमाइज़ेशन है और पोर्टेबिलिटी के आधार पर विफल हो जाएगा, जो शर्म की बात है।
इवान लुईस

6
@IanLewis मैं सहमत नहीं हूँ। PHP के शॉर्ट टैग का ASP से कोई लेना देना नहीं है। सबसे अच्छा कारण जो आप उपयोग करना चाहते हैं <?= वह टेम्प्लेटिंग के लिए है और मुझे लगता है कि यह काफी वैध है। मूंछ जैसी अन्य टेम्प्लेटिंग भाषाएं भी छोटे सरल टैग का उपयोग करती हैं {{var}}। PHP को अक्सर एक टेम्प्लेटिंग लैंग्वेज के रूप में प्रयोग किया जाता है और इनलाइन HTML की <?php echo $var ?>तुलना <?=$var?>में बहुत अधिक बदसूरत होती है।
RJD22

यह एक दिलचस्प बहस है और अत्यधिक व्यक्तिपरक हो जाता है, मेरा मानना ​​है कि सुंदर कोड जरूरी कोड से बेहतर है जो अंतर्निहित कुरूपता का एक सा दिखाता है। यहाँ मेरा अपना विचार यह है कि <? = $ Var?> संस्करण अधिक भीड़भाड़ वाला लगता है और अधिक खुला, लेकिन अधिक लंबा संस्करण की तुलना में बहुत कम पठनीय होता है। एएसपी के साथ लिंक एक आम धारणा होनी चाहिए, क्योंकि जितने भी डेवलपर्स हैं, मैं जानता हूं कि सभी बिना किसी संकेत के समान लिंक बनाते हैं।
इयान लुईस

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.Op php.ini फ़ाइल और ढूंढें short_open_tag। डिफ़ॉल्ट रूप से यह इसे offबदलने के लिए है on

3. सर्वर को पुनरारंभ करें, इस टिप्पणी को निष्पादित करें

service httpd restart

धन्यवाद


18

उबंटू पर वैग्रंट इंस्‍टॉल स्क्रिप्ट से खोलने के लिए लघु टैग सेट करने के लिए:

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 पुनरारंभ
संपत परेरा

sudo सेवा php-fpm पुनरारंभ PHP के किसी भी डिफ़ॉल्ट संस्करण के लिए काम करेगा जिसे आपने अपने बॉक्स में स्थापित किया है, जब तक कि आपके पास कई संस्करण नहीं हैं, जिस स्थिति में आपको उस संस्करण को निर्दिष्ट करना होगा जिसका आप उल्लेख कर रहे हैं
Eddy Ferreira

1
नगनेक्स को फिर से शुरू करना मेरे लिए मुश्किल काम नहीं था। वास्तव में, phpini () फ़ंक्शन बंद के रूप में short_open_tag दिखा रहा है। मैंने बस सर्वर को रिबूट किया और यह काम किया। कठोर की तरह, लेकिन अभी भी अनुसंधान की तुलना में तेजी से क्यों ...
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

एक डेबियन जेसी पर यह करना पड़ा। यह वास्तव में सभी PHP5-FPM इंस्टॉल पर लागू हो सकता है।
बर्ट्रेंड

7

यदि आप के Ubuntuसाथ उपयोग कर रहे हैं Apache+php5, तो वर्तमान संस्करणों पर 2 स्थान हैं जहां आपको बदलने की आवश्यकता हैshort_open_tag = On

  1. /etc/php5/apache2/php.ini - यह आपके वेब सर्वर (Apache) के माध्यम से लोड किए गए पृष्ठों के लिए है
  2. /etc/php5/cli/php.ini- इस कॉन्फ़िगरेशन का उपयोग तब किया जाता है जब आप कमांड लाइन से अपनी php फाइलें लॉन्च करते हैं, जैसे: php yourscript.php- जो कि सर्वर पर सीधे मैन्युअल रूप से या cronjob निष्पादित php फाइलों के लिए जाती है।

6

यदि आप अपनी php.ini फ़ाइल को संपादित करते हैं, तो प्रभावी होने के लिए php.ini के संपादन के लिए अपनी सेवा (Apache2, आदि) को पुनः आरंभ करना याद रखें।


5

Wamp सर्वर उपयोगकर्ताओं के लिए आसान तरीका है: आप उस सेटिंग को सक्षम कर सकते हैं (बाएं) WampServer आइकन पर एक बार क्लिक करें, PHP -> PHP सेटिंग्स -> छोटा खुला टैग चुनें। एक सेकंड के लिए प्रतीक्षा करें, फिर WampServer आपके PHP और इसके वेब सेवा को स्वचालित रूप से पुनरारंभ करेगा।

मूल रूप से: 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 का उल्लेख किया है। दूसरे को short_open_tag = On में सक्षम करें। पहले एक टिप्पणी की गई है और आपको इसे अनसुना करने और इसे संपादित करने का प्रलोभन दिया जा सकता है, लेकिन यह एक दूसरे शॉर्ट_ोपेन_टैग द्वारा ओवर-राइड किया गया है


1

यदि आप विंडोज़ में 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] = पर


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

यह ubuntu 16 पर php7.2 पर काम करता है, ब्रैडली फ्लड द्वारा ऊपर के रूप में एक ही जवाब है, हालांकि वह निर्देशिका जिसमें कॉन्फ़िगरेशन फ़ाइल संग्रहीत है, बदल गई है।

इसके अलावा आप अपने वर्तमान में स्थापित संस्करण से मिलान करने के लिए php स्ट्रिंग में संस्करण बदल सकते हैं।



-2

I'mv ने मेरे aws centos 7 उदाहरण और php7 (PHP 7.0.33 (cli) (निर्मित: Dec 6 2018 22:30:44) (NTS) पर short_open_tag को बदल दिया, लेकिन इसकी php जानकारी पृष्ठ को दर्शाती है और कोड। इसलिए मैं डॉक्स का उल्लेख कर सकता हूं और अपने मामले पर समाधान पा सकता हूं। Short_open_tag के बाद asp_tags = के बाद एक अतिरिक्त लाइन जोड़ें। इसके बाद 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 और फिर अपाचे सर्वर को पुनरारंभ करें।


6
asp_tags? किस लिए?
आपका कॉमन सेंस

1
एस्प सबसे शायद एक टाइपो है। @ नाल के लिए समुदाय केवल थोड़ी दया क्यों नहीं दिखा सकता है?
n8bar
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.