PHP 짧은 태그를 활성화하는 방법은 무엇입니까?


324

Linux 서버에 웹 응용 프로그램이 있습니다. <?

이 응용 프로그램을 Windows 환경에 복사해야했고 SQL 문이 다르게 렌더링되는 것을 제외하고는 모든 것이 잘 작동합니다. 이 스크립트로 시작과 관련이 있을지 모르겠어요 <?php대신에 <?내가 수 있도록 위치를 알고하지 않기 때문에 <?으로부터 PHP.ini내가 그것을 변경할 수 있도록<?php

나는이 두 문장이 동일하다는 것을 알고 있지만 <?응용 프로그램이 정확히 동일한 지 확인하기 위해 테스트해야합니다 . 이 방법으로 다른 가능성을 없앨 수 있습니다.

감사



그러나 이야기는 여전히 발전하고 있습니다. 계속 지켜봐 주시기 바랍니다. :)
감독

답변:


559

세트

short_open_tag=On

에서 의 php.ini

그리고 Apache 서버를 다시 시작하십시오.


54
PHP가 Apache 모듈로 실행되는 경우 .htaccess 파일로 설정할 수도 있습니다. php_flag short_open_tag on
Álvaro González

12
대부분의 lileky/etc/php5/apache2/php.ini
Benjamin Crouzier

@pinouchon, seedeg 그가 Windows로 이동한다고 썼지 만, 귀하의 의견은 저를 도와줍니다 :)
Line

7
php --ini로드 된 구성 파일 (로드 된 구성 파일 : /etc/php5/cli/php.ini)을 찾는 데 사용
Wietse

Windows에서 xampp를 사용하는 경우 XAMPP 제어판을 열고 CONFIG 버튼을 클릭하고 PHP (php.ini) 옵션으로 이동하십시오.
Praful Rajput

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부터<?= ... ?> 나쁜 습관 이라고 생각하는 사람들에게 shorttag는 설정에 관계없이 모든 곳 에서 지원 되므로 서버의 설정을 제어 할 수 있다면 사용하지 않을 이유가 없습니다. 이 링크에서 말했다 : short_open_tag


5
짧은 열린 태그는 반드시 나쁜 습관은 아니지만 (여기서 열린 마음을 유지하려고 노력하고 있음) 단지 Rasmus et al. PHP5.4에서 기본 지원을 제공하기로 결정했지만 사용에 대한 정당성을 제공하지 않습니다. 그것들을 사용하면 나중에 바람직하지 않은 종속성을 만들거나 XML과 혼동을 일으킬 수 있습니다. 여기에 좋은 토론이 있습니다 : stackoverflow.com/questions/200640/…
Ian Lewis

1
이안 우리는 <? echo $var ?>짧은 오픈 태그가 아니라 짧은 오픈 태그 에 대해 이야기하고 <?= $var ?>있습니다. Afaik XML은 영향을받지 않아야합니다.
RJD22

우리는 PHP 코딩 테스트를 받았으며 <? = 짧은 태그가 사용 된 제출물을 가끔받습니다. 불행히도이 스타일이 어느 곳에서나 사용된다는 가정은 약간 순진하며 종종 ASP를 배우는 개발자들로부터 나옵니다. 분명히 사용 가능하지만 사용은 미세 최적화이며 이식성에 실패합니다.
Ian Lewis

6
@IanLewis 동의하지 않습니다. PHP 짧은 태그는 ASP와 아무 관련이 없습니다. 당신이 사용하고 싶은 가장 좋은 이유 <?= 는 템플릿을 만들기위한 것이며 상당히 유효한 것으로 생각합니다. 콧수염과 같은 다른 템플릿 언어도 간단한 간단한 태그를 사용합니다 {{var}}. PHP는 종종 템플릿 언어로 사용되며 인라인 HTML <?php echo $var ?>보다 훨씬 더 어려워 야 <?=$var?>합니다.
RJD22

그것은 흥미로운 논쟁이며 매우 주관적입니다. 나는 아름다운 코드가 본질적으로 추한 약간의 코드를 보여주는 코드보다 낫다고 생각하지 않습니다. 내 자신의 견해는 <? = $ 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. 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

위의 모든 답변이 부분적으로 만 올바른 것을 볼 수 있습니다. 실제로 모든 21st Century PHP 앱에는 FastCGI Process Manager (php-fpm)가 있으므로 test.php 스크립트에 php-info ()를 추가하고 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

데비안 제시에서이 작업을 수행해야했습니다. 이것은 실제로 모든 PHP5-FPM 설치에 적용될 수 있습니다.
Bertrand

7

Ubuntu와 함께 사용 하는 경우 Apache+php5현재 버전에서 다음으로 변경해야 할 두 곳이 있습니다.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 파일을 편집하는 경우 서비스 (apache2 등)를 다시 시작하여 php.ini에 대한 편집 내용을 적용하십시오.


5

Wamp Server 사용자의 경우 더 쉬운 방법이 있습니다. 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 두 번째 것을 활성화하십시오. 첫 번째는 주석 처리되어 있으며 주석 처리를 제거하고 편집하고 싶을 수도 있지만 두 번째 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] = 켜기


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

구성 파일이 저장된 디렉토리가 변경되었지만 우분투 16의 php7.2에서 작동합니다.

또한 현재 설치된 버전과 일치하도록 PHP 문자열의 버전을 변경할 수 있습니다.



-2

AWS CentOS 7 인스턴스와 php7 (PHP 7.0.33 (cli) (built : 2018 년 12 월 6 일 22:30:44) (NTS))에서 short_open_tag Off를 On으로 변경했지만 PHP 정보 페이지를 반영하지 않습니다. 그리고 코드. 그래서 나는 문서를 참조하고 내 사건에 대한 해결책을 찾습니다. short_open_tag 다음에 asp_tags = On 으로 추가 행을 추가하십시오. 아파치 그것은 코드에 작품을 다시 시작한 후 내가 제대로 출력을 이동

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 = Onand short_open_tag = On를 설정 한 다음 아파치 서버를 다시 시작하십시오.\apache\Apache2.2.21\bin\php.ini\bin\php\php5.3.8\php.ini


6
asp_tags? 무엇 때문에?
당신의 상식

1
asp는 아마도 오타 일 것입니다. 왜 커뮤니티가 @kal에 약간의 자비를 보여줄 수 없습니까?
n8bar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.