Bagaimana cara mengaktifkan tag pendek PHP?


324

Saya memiliki aplikasi web di server Linux yang dimulai dengan <?

Saya perlu menyalin aplikasi ini ke lingkungan windows dan semuanya berfungsi dengan baik kecuali bahwa pernyataan SQL diberikan secara berbeda. Saya tidak tahu apakah ini ada hubungannya dengan skrip yang dimulai dengan <?phpalih - alih <?karena saya tidak tahu dari mana harus mengaktifkan <?dari PHP.inijadi saya mengubahnya menjadi<?php

Saya tahu bahwa 2 pernyataan ini seharusnya memiliki arti yang sama tetapi saya harus mengujinya <?untuk memastikan bahwa aplikasi tersebut persis sama. Dengan cara ini saya bisa menghilangkan kemungkinan lain.

Terima kasih



Namun, ceritanya masih berkembang . Tetap disini. :)
uskup

Jawaban:


559

Set

short_open_tag=On

di php.ini

Dan restart server Apache Anda.


54
Jika PHP berjalan sebagai modul Apache, Anda juga dapat mengaturnya dalam file .htaccess: php_flag short_open_tag on
Álvaro González

12
Paling lileky di/etc/php5/apache2/php.ini
Benjamin Crouzier

@pinouchon, seedeg menulis bahwa ia pindah ke Windows, tetapi komentar Anda membantu saya :)
Line

7
Gunakan php --iniuntuk mencari file konfigurasi yang dimuat (Loaded Configuration File: /etc/php5/cli/php.ini)
Wietse

Jika Anda menggunakan xampp di windows maka silakan Buka panel kontrol XAMPP, Klik tombol CONFIG dan pergi ke opsi PHP (php.ini).
Praful Rajput

80

Ini dapat dilakukan dengan mengaktifkan short_open_tag di php.ini :

short_open_tag = on

Jika Anda tidak memiliki akses ke php.ini, Anda dapat mencoba mengaktifkannya melalui file .htaccess tetapi ada kemungkinan perusahaan hosting menonaktifkan ini jika Anda menggunakan shared hosting:

php_value short_open_tag 1

Bagi orang yang berpikir bahwa short_open_tags adalah praktik yang buruk pada php 5.4 <?= ... ?>shorttag akan didukung di mana-mana , terlepas dari pengaturannya sehingga tidak ada alasan untuk tidak menggunakannya jika Anda dapat mengontrol pengaturan di server. Juga dikatakan di tautan ini: short_open_tag


5
Tag terbuka pendek tidak selalu merupakan praktik buruk (saya mencoba untuk tetap berpikiran terbuka di sini) tetapi hanya karena Rasmus et al. memutuskan untuk memberikan dukungan default untuk mereka di PHP5.4 tidak memberikan alasan untuk menggunakannya. Menggunakannya dapat membuat ketergantungan yang tidak diinginkan di kemudian hari atau menyebabkan kebingungan dengan XML. Beberapa diskusi yang bagus di sini: stackoverflow.com/questions/200640/…
Ian Lewis

1
Ian. Kami tidak berbicara tentang <? echo $var ?>tag terbuka pendek tetapi <?= $var ?>tag terbuka pendek. Afaik XML tidak boleh terpengaruh.
RJD22

Kami memiliki tes coding PHP dan sesekali menerima kiriman di mana tag pendek <? = Telah digunakan. Sayangnya asumsi bahwa gaya ini digunakan di mana-mana agak naif dan sering kali berasal dari pengembang yang dibesarkan dengan diet ASP. Jelas itu tersedia tetapi penggunaannya adalah mikro-optimasi dan akan gagal karena alasan portabilitas, yang memalukan.
Ian Lewis

6
@IanLewis saya tidak setuju. Tag pendek PHP tidak ada hubungannya dengan ASP. Alasan terbaik mengapa Anda ingin menggunakan <?= adalah untuk templating dan saya pikir itu yang cukup valid. Bahasa templating lain seperti kumis juga menggunakan tag sederhana pendek {{var}}. PHP sering digunakan sebagai bahasa templating dan yang harus dilakukan <?php echo $var ?>jauh lebih jelek daripada <?=$var?>di HTML sebaris.
RJD22

Ini debat yang menarik dan menjadi sangat subyektif, saya tidak percaya kode yang indah lebih baik daripada kode yang menunjukkan sedikit keburukan yang melekat. Pandangan saya sendiri di sini adalah bahwa versi <? = $ Var?> Terlihat jauh lebih ramai dan jauh lebih mudah dibaca daripada versi yang lebih terbuka, tetapi lebih lama. Tautan dengan ASP haruslah persepsi umum, karena beberapa pengembang yang saya tahu semua membuat tautan yang sama tanpa diminta.
Ian Lewis

19

Ini dapat dilakukan dengan mengaktifkan short_open_tag di php.ini:

1.Untuk mencari file php.ini, pada baris komentar jalankan

 php --ini

Anda akan mendapatkan beberapa hal seperti 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

Lihat baris ke-2 dari output komentar. File akan berada di jalur yang disebutkan.

Buka file php.ini dan temukan short_open_tag. Secara default itu di offubah ke on.

3. Mulai ulang server, jalankan komentar ini

service httpd restart

Terima kasih


18

Untuk menetapkan tag pendek agar dibuka dari skrip instal Vagrant di Ubuntu:

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

12

Saya dapat melihat semua jawaban di atas hanya sebagian yang benar. Pada kenyataannya semua aplikasi PHP Abad 21 akan memiliki FastCGI Process Manager (php-fpm) sehingga setelah Anda menambahkan php-info () ke skrip test.php Anda dan memeriksa jalur yang benar untuk php.ini

Go to php.ini and set short_open_tag = On

PENTING: maka Anda harus memulai kembali proses php-fpm Anda agar ini dapat bekerja!

sudo service php-fpm restart

dan akhirnya restart server nginx / http Anda

sudo service nginx restart

2
Dalam Kasus Saya: sudo service restart php7.0-fpm
Sampath Perera

sudo service restart php-fpm akan berfungsi untuk versi PHP default yang telah Anda instal pada komputer Anda, kecuali jika Anda memiliki beberapa versi yang dalam hal ini Anda harus menentukan versi yang Anda maksud
Eddy Ferreira

1
Memulai ulang nginx hanya tidak berhasil untuk saya. Bahkan, fungsi phpini () terus menunjukkan short_open_tag sebagai Mati. Saya baru saja me-reboot server dan berhasil. Agak drastis, tapi masih lebih cepat dari riset mengapa ...
Fran Marzoa

10

Anda harus mengaktifkan short_open_tags.

short_open_tag = On

10

Sesederhana itu, ikuti langkah-langkah berikut:

  1. Buka php.inifile
  2. Temukan short_open_tagdan aturon

    short_open_tag = On
  3. Mulai ulang server


9

Di CentOS 6 (diuji pada Centos 7 juga) Anda tidak dapat mengatur short_open_tag di /etc/php.ini untuk php-fpm. Anda akan memiliki kesalahan:

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

Anda harus mengedit config untuk situs Anda, yang dapat ditemukan di /etc/php-fpm.d/www.conf Dan menulis di akhir file:

php_value[short_open_tag] =  On

Harus melakukan ini pada Debian Jessie. Ini mungkin berlaku untuk semua pemasangan PHP5-FPM sebenarnya.
Bertrand

7

Jika Anda menggunakan Ubuntudengan Apache+php5, maka pada versi saat ini ada 2 tempat di mana Anda perlu mengubahnyashort_open_tag = On

  1. /etc/php5/apache2/php.ini - Ini untuk halaman yang dimuat melalui server web Anda (Apache)
  2. /etc/php5/cli/php.ini- konfigurasi ini digunakan ketika Anda meluncurkan file php dari baris perintah, seperti: php yourscript.php- yang berlaku untuk file php yang dijalankan secara manual atau cronjob langsung di server.

6

jika Anda mengedit file php.ini Anda, jangan lupa untuk me-restart layanan Anda (apache2, dll) untuk pengeditan ke php.ini agar berlaku


5

Untuk pengguna Wamp Server ada cara yang lebih mudah: Anda dapat mengaktifkan pengaturan itu cukup (kiri) klik sekali pada ikon WampServer, pilih PHP -> pengaturan PHP -> tag terbuka pendek. Tunggu sebentar, maka WampServer akan secara otomatis me-restart PHP Anda dan juga layanan web-nya.

berasal dari: 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

jika menggunakan xampp, Anda akan melihat file php.ini telah dua kali menyebutkan short_open_tag. Aktifkan yang kedua ke short_open_tag = Hidup. Yang pertama dikomentari dan Anda mungkin tergoda untuk membatalkan komentar dan mengeditnya tetapi terlalu dikuasai oleh short_open_tag kedua


1

Jika Anda menggunakan xampp di windows maka silakan lakukan hal berikut

  1. Buka panel kontrol XAMPP.
  2. Klik pada tombol CONFIG.
  3. Pergi ke opsi PHP (php.ini).

Temukan short_open_tag menggunakan utilitas ctrl + f

Anda akan ditemukan ;short_open_tag

hapus tanda titik koma (;) dari baris.

dan simpan sebagai short_open_tag = on

Terakhir, restart server Apache Anda


0

Untuk mengaktifkan short_open_tag untuk domain tertentu dengan php-fpm, Anda harus mengedit:

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

Di mana xxxxx adalah nomor soket dari domain.

Dan tambahkan: php_value [short_open_tag] = Hidup


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

Itu berfungsi pada php7.2 di ubuntu 16, jawaban yang sama seperti di atas oleh Bradley Flood, meskipun direktori tempat file konfigurasi disimpan telah berubah.

Anda juga dapat mengubah versi dalam string php agar sesuai dengan versi yang saat ini diinstal.



-2

Saya telah mengubah short_open_tag ke Aktif pada aws centos 7 instance saya dan php7 (PHP 7.0.33 (cli) (dibangun: 6 Desember 2018 22:30:44) (NTS)), tetapi itu tidak mencerminkan halaman info php dan kodenya. Jadi saya merujuk Mei dokumen dan menemukan solusi pada kasus saya. Tambahkan baris tambahan setelah short_open_tag sebagai asp_tags = Aktif setelah itu restart Apache Ia bekerja pada kode dan saya pergi output dengan benar

file 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

Mengatur asp_tags = Ondan short_open_tag = Ondi kedua file \apache\Apache2.2.21\bin\php.inidan \bin\php\php5.3.8\php.ini dan kemudian restart server apache.


6
asp_tags? untuk apa?
Akal Sehat Anda

1
asp mungkin salah ketik. Mengapa komunitas tidak bisa menunjukkan sedikit belas kasihan untuk @kal?
n8bar
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.