কীভাবে পিএইচপি সংক্ষিপ্ত ট্যাগগুলি সক্ষম করবেন?


324

আমার একটি লিনাক্স সার্ভারে একটি ওয়েব অ্যাপ্লিকেশন রয়েছে যা দিয়ে শুরু হয় <?

আমার উইন্ডোজ পরিবেশে এই অ্যাপ্লিকেশনটি অনুলিপি করা দরকার এবং এসকিউএল স্টেটমেন্টটি ভিন্নভাবে রেন্ডার করা ছাড়া সবকিছু ঠিকঠাক কাজ করছে। যদি এই স্ক্রিপ্টের সাথে শুরু কি আছে আমি জানি না <?phpপরিবর্তে <?, কারণ আমি কোথা থেকে সক্রিয় করতে জানি না <?থেকে PHP.iniতাই আমি এটা পরিবর্তিত<?php

আমি জানি যে এই 2 টি বিবৃতি একইরকম বলে মনে করা <?হচ্ছে তবে অ্যাপ্লিকেশনটি ঠিক একইরকম তা নিশ্চিত করার জন্য আমার এটি পরীক্ষা করা দরকার । এইভাবে আমি আরেকটি সম্ভাবনা দূর করতে পারি।

ধন্যবাদ



তবে গল্পটি এখনও বিকাশ করছে । সাথে থাকুন. :)
বিশপ

উত্তর:


559

সেট

short_open_tag=On

মধ্যে php.ini

এবং আপনার অ্যাপাচি সার্ভারটি পুনরায় চালু করুন।


54
যদি পিএইচপি অ্যাপাচি মডিউল হিসাবে চালিত হয় তবে আপনি এটি একটি htaccess ফাইলটিতেও সেট করতে পারেন: php_flag শর্ট_ ওপেন_ট্যাগ অন
González

12
সর্বাধিক বিস্মিত/etc/php5/apache2/php.ini
বেনজমিন ক্রাউজিয়ার

@ পিনচোন, সিদেগ লিখেছেন যে তিনি উইন্ডোতে চলে আসেন, তবে আপনার মন্তব্যটি আমাকে সাহায্য করে :)
লাইন

7
php --iniলোড হওয়া কনফিগারেশন ফাইলটি সনাক্ত করতে ব্যবহার করুন (লোডযুক্ত কনফিগারেশন ফাইল:
/etc/php5/cli/php.ini

আপনি যদি উইন্ডোতে এক্সএ্যাম্প্প ব্যবহার করে থাকেন তবে দয়া করে এক্সএএমপিপি নিয়ন্ত্রণ প্যানেলটি খুলুন, কনফিগ বোতামে ক্লিক করুন এবং পিএইচপি (php.ini) বিকল্পে যান to
প্রফুল রাজপুত

80

এই সক্ষম করে কাজ করা যেতে পারে short_open_tag মধ্যে php.ini :

short_open_tag = on

আপনার যদি php.ini এ অ্যাক্সেস না থাকে তবে আপনি তাদের .htaccess ফাইলটি ট্রট সক্ষম করার চেষ্টা করতে পারেন তবে হোস্টিং সংস্থার পক্ষে এটি ভাগ্যবান হোস্টিংয়ে থাকলে এটি অক্ষম করা সম্ভব:

php_value short_open_tag 1

লোকেরা ভাবছেন যে পিএইচপি 5.4-র হিসাবে <?= ... ?>শর্ট_পেন_ট্যাগগুলি খারাপ অনুশীলন , শর্টট্যাগটি সেটিংস নির্বিশেষে সর্বত্রই সমর্থন করবে সুতরাং আপনি যদি সার্ভারে সেটিংস নিয়ন্ত্রণ করতে পারেন তবে সেগুলি ব্যবহার না করার কোনও কারণ নেই। এছাড়াও এই লিঙ্কে বললঃ short_open_tag


5
সংক্ষিপ্ত উন্মুক্ত ট্যাগগুলি অগত্যা খারাপ অনুশীলন নয় (আমি এখানে একটি মুক্ত মন রাখার চেষ্টা করছি) তবে কেবল রাসমাস এট আল হিসাবে। পিএইচপি 5.4 এ তাদের জন্য ডিফল্ট সমর্থন সরবরাহ করার সিদ্ধান্ত নিয়েছে তাদের ব্যবহারের ন্যায়সঙ্গততা সরবরাহ করে না। এগুলি ব্যবহার করে এমন একটি নির্ভরতা তৈরি হতে পারে যা পরে অনাকাঙ্ক্ষিত বা XML এর সাথে বিভ্রান্তি সৃষ্টি করে। এখানে কিছু ভাল আলোচনা: স্ট্যাকওভারফ্লো.com
আয়ান লুইস

1
ইয়ান। আমরা <? echo $var ?>শর্ট ওপেন ট্যাগের কথা বলছি না তবে <?= $var ?>সংক্ষিপ্ত ওপেন ট্যাগের বিষয়ে। আফাইক এক্সএমএলকে প্রভাবিত করা উচিত নয়।
আরজেডি 22

আমাদের একটি পিএইচপি কোডিং পরীক্ষা রয়েছে এবং মাঝে মাঝে <? = সংক্ষিপ্ত ট্যাগটি ব্যবহৃত হয়েছে এমন জমাগুলি পান। দুর্ভাগ্যক্রমে ধারণাটি যে এই স্টাইলটি সর্বত্র ব্যবহৃত হচ্ছে এটি কিছুটা নির্বোধ এবং প্রায়শই এটিএসপির ডায়েট নিয়ে আসা বিকাশকারীদের কাছ থেকে আসে। স্পষ্টত এটি উপলব্ধ তবে এর ব্যবহারটি একটি মাইক্রো-অপ্টিমাইজেশন এবং বহনযোগ্যতার কারণে ব্যর্থ হবে, যা লজ্জাজনক।
ইয়ান লুইস

6
@ ইয়ানলিউস আমি একমত নই পিএইচপি সংক্ষিপ্ত ট্যাগটির এএসপির সাথে কোনও সম্পর্ক নেই। আপনি কেন ব্যবহার করতে চান তার সর্বোত্তম কারণ <?= হ'ল টেম্পলেট করার জন্য এবং আমি মনে করি এটি মোটামুটি বৈধ। গোঁফের মতো অন্যান্য টেম্প্লেটিং ভাষাতেও সংক্ষিপ্ত সাধারণ ট্যাগ ব্যবহার করা হয় {{var}}। পিএইচপি প্রায়শই একটি টেম্পলেটিং ভাষা হিসাবে ব্যবহৃত হয় এবং করণটি ইনলাইন এইচটিএমএল এর <?php echo $var ?>চেয়ে অনেক খারাপ হয় <?=$var?>
আরজেডি 22

এটি একটি আকর্ষণীয় বিতর্ক এবং অত্যন্ত সাবজেক্টিভ হয়ে ওঠে, আমি বিশ্বাস করি না যে সুন্দর কোডটি কোডের থেকে কিছুটা অন্তর্নিহিত কদর্যতা দেখায় প্রয়োজনীয়ভাবে ভাল better এখানে আমার নিজের দৃষ্টিভঙ্গি হ'ল <? = $ Var?> সংস্করণটি আরও বেশি উন্মুক্ত, তবে দীর্ঘতর সংস্করণের তুলনায় অনেক বেশি ভিড়যুক্ত এবং অনেক কম পঠনযোগ্য বলে মনে হচ্ছে। এএসপির সাথে লিঙ্কটি অবশ্যই একটি সাধারণ উপলব্ধি হতে হবে তবে বেশ কয়েকটি বিকাশকারী হিসাবে আমি জানি সমস্তই অনুরোধ না করে একই লিঙ্কটি তৈরি করে।
ইয়ান লুইস

19

এটি php.ini এ শর্ট_পেন_ট্যাগ সক্ষম করে করা যেতে পারে:

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

মন্তব্য আউটপুট থেকে ২ য় লাইন দেখুন file ফাইলটি উল্লিখিত পথে থাকবে।

2. 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

আমি দেখতে পাচ্ছি উপরের সমস্ত উত্তরগুলি কেবলমাত্র আংশিকভাবে সঠিক। বাস্তবে একবিংশ শতাব্দীর সমস্ত পিএইচপি অ্যাপ্লিকেশনগুলিতে ফাস্টসিজিআই প্রসেস ম্যানেজার (পিএইচপি-এফপিএম) থাকবে তাই আপনি একবার আপনার টেস্ট.পিএইচপি স্ক্রিপ্টে পিএইচপি-ইনফর্ম () যুক্ত করে পিএইচপি.এনআইয়ের সঠিক পথটি যাচাই করেছেন once

Go to php.ini and set short_open_tag = On

গুরুত্বপূর্ণ: তারপরে আপনাকে অবশ্যই আপনার পিএইচপি-এফপিএম প্রক্রিয়া পুনরায় চালু করতে হবে যাতে এটি কাজ করতে পারে!

sudo service php-fpm restart

এবং তারপরে আপনার nginx / HTTP সার্ভারটি পুনরায় চালু করুন

sudo service nginx restart

2
আমার ক্ষেত্রে: সুডো সার্ভিস php7.0-fpm রিস্টার্ট
সম্পথ পেরেরা

সুডো সার্ভিস পিএইচপি-এফএমপি পুনঃসূচনা আপনার বাক্সে যে কোনও পিএইচপি ইনস্টল করা আছে তার ডিফল্ট সংস্করণের জন্য কাজ করবে, যদি আপনার একাধিক সংস্করণ না থাকে তবে আপনি যে সংস্করণটি উল্লেখ করছেন
এডি ফেরেরিরা

1
এনগিনেক্স পুনরায় চালু করা আমার পক্ষে কৌশলটি করেনি। প্রকৃতপক্ষে, phpini () ফাংশনটি শর্ট_পেন_ট্যাগ বন্ধ হিসাবে দেখিয়ে চলেছে। আমি সবে সার্ভারটি রিবুট করেছি এবং এটি কাজ করে। ধরণের কঠোর, তবে গবেষণার চেয়ে এখনও দ্রুত কেন ...
ফ্রাঙ্ক মারজোয়া

10

আপনার শর্ট_পেন_ট্যাগগুলি চালু করা দরকার।

short_open_tag = On

10

হিসাবে সহজ, নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করুন:

  1. যান php.iniফাইল
  2. এই short_open_tagকরুন এবং এটি সেটon

    short_open_tag = On
  3. সার্ভারটি পুনরায় চালু করুন


9

CentOS 6 এ (সেন্টোস 7 তেও পরীক্ষিত) আপনি পিএইচপি-এফএমপি-র জন্য /etc/php.ini এ শর্ট_পেন_ট্যাগ সেট করতে পারবেন না। আপনার ত্রুটি হবে:

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

এটি একটি ডেবিয়ান জেসির উপর করতে হয়েছিল। এটি আসলে সমস্ত পিএইচপি 5-এফপিএম ইনস্টলগুলিতে প্রয়োগ হতে পারে।
বারট্র্যান্ড

7

আপনি ব্যবহার করে থাকেন Ubuntuসঙ্গে Apache+php5, তারপর বর্তমান সংস্করণের উপর সেখানে 2 জায়গায় যেখানে আপনাকে পরিবর্তন করতে হবে হয়short_open_tag = On

  1. /etc/php5/apache2/php.ini - এটি আপনার ওয়েব সার্ভারের মাধ্যমে বোঝানো পৃষ্ঠাগুলির জন্য (অ্যাপাচি)
  2. /etc/php5/cli/php.ini- আপনি যখন কমান্ড লাইন থেকে আপনার পিএইচপি ফাইলগুলি লঞ্চ করবেন তখন এই কনফিগারেশনটি ব্যবহার করা হয়, যেমন: php yourscript.php- এটি ম্যানুয়ালি বা ক্রোনজব এক্সিকিউটেড পিএইচপি ফাইলগুলি সরাসরি সার্ভারে যায়।

6

যদি আপনি আপনার php.ini ফাইল সম্পাদনা করেন তবে সম্পাদনাগুলি কার্যকর করতে php.ini এর জন্য আপনার পরিষেবা (অ্যাপাচি 2, ইত্যাদি) পুনরায় চালু করতে ভুলবেন না


5

ওয়্যাম্প সার্ভার ব্যবহারকারীদের জন্য আরও সহজ উপায় রয়েছে: আপনি সেই সেটিংটি কেবলমাত্র (বাম দিকে) ওয়্যাম্প সার্ভার আইকনে ক্লিক করতে সক্ষম করতে পারেন, পিএইচপি -> পিএইচপি সেটিংস -> সংক্ষিপ্ত ওপেন ট্যাগটি চয়ন করতে পারেন। এক সেকেন্ডের জন্য অপেক্ষা করুন, তারপরে ওয়্যাম্প সার্ভার স্বয়ংক্রিয়ভাবে আপনার পিএইচপি এবং তার ওয়েব পরিষেবা পুনরায় চালু করবে।

মূলত: 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 ফাইলটি দু'বারই শর্ট_পেন_ট্যাগ উল্লেখ করেছে। দ্বিতীয়টিকে শর্ট_পেন_ট্যাগ = চালু করতে সক্ষম করুন। প্রথমটি মন্তব্য করা হয়েছে এবং আপনি এটি সম্পাদন করতে প্ররোচিত হতে পারেন তবে এটি দ্বিতীয় সংক্ষিপ্ত_পেন_ট্যাগ দ্বারা উপচে পড়া


1

আপনি যদি উইন্ডোতে এক্সএ্যাম্প্প ব্যবহার করেন তবে দয়া করে নিম্নলিখিতটি করুন

  1. এক্সএএমপিপি নিয়ন্ত্রণ প্যানেলটি খুলুন।
  2. কনফিগ বোতামে ক্লিক করুন।
  3. পিএইচপি (php.ini) বিকল্পে যান।

Ctrl + f ইউটিলিটি ব্যবহার করে শর্ট_পেন_ট্যাগটি সন্ধান করুন

আপনি পাবেন ;short_open_tag

দয়া করে সেমিকোলন (;) অপসারণ করুন লাইন থেকে সরিয়ে দিন।

এবং এটি হিসাবে রাখা short_open_tag = on

অবশেষে, আপনার অ্যাপাচি সার্ভারটি পুনরায় চালু করুন


0

পিএইচপি-এফএমপি দিয়ে কোনও নির্দিষ্ট ডোমেনের জন্য শর্ট_পেন_ট্যাগ সক্ষম করতে আপনাকে অবশ্যই সম্পাদনা করতে হবে:

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

যেখানে xxxxx হল ডোমেনের সকেট নম্বর।

এবং যোগ করুন: php_value [সংক্ষিপ্ত_পেন_ট্যাগ] = চালু


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

উবুন্টু 16 তে php7.2 এ কাজ করে, উপরে ব্র্যাডলি বন্যার উপরে একই উত্তর, যদিও কনফিগারেশন ফাইলটি সংরক্ষিত ডিরেক্টরিটিতে পরিবর্তন হয়েছে।

এছাড়াও আপনি বর্তমানে ইনস্টল করা সংস্করণটি মেলে পিএইচপি স্ট্রিংয়ের সংস্করণটি পরিবর্তন করতে পারেন।



-2

আমি আমার এইউস সেন্টোস 7 উদাহরণ এবং পিএইচপি 7 (পিএইচপি 7.0.33 (ক্লিটার) (বিল্ড: ডিসেম্বর 6 2018 22:30:44) (এনটিএস)) এর শর্ট_ ওপেন_ট্যাগটি অফ করে দিয়েছি, তবে এটি পিএইচপি তথ্য পৃষ্ঠাটি প্রতিফলিত করছে না এবং কোড। সুতরাং আমি ডকগুলি উল্লেখ করতে পারি এবং আমার মামলার সমাধান খুঁজে পাই। সংক্ষেপে_পেন_ট্যাগের পরে একটি অতিরিক্ত লাইন যুক্ত করুন asp_tags = পুনরায় আরম্ভ করার পরে অ্যাপাচি এটি কোডে কাজ করে এবং আমি আউটপুটটি সঠিকভাবে চলেছি

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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.