Wie aktiviere ich PHP Short Tags?


324

Ich habe eine Webanwendung auf einem Linux-Server, die mit beginnt <?

Ich musste diese Anwendung in eine Windows-Umgebung kopieren und alles funktioniert einwandfrei, außer dass eine SQL-Anweisung anders gerendert wird. Ich weiß nicht , ob dies mit dem Skript mit Beginn zu tun hat <?phpstatt , <?weil ich nicht weiß , von wo aus das ermöglichen , <?von der PHP.iniso ich es geändert<?php

Ich weiß, dass diese beiden Aussagen dasselbe bedeuten sollen, aber ich muss sie testen, <?um sicherzustellen, dass die Anwendung genau gleich ist. Auf diese Weise kann ich eine andere Möglichkeit ausschließen.

Vielen Dank



Die Geschichte entwickelt sich jedoch noch . Bleib dran. :)
Bischof

Antworten:


558

einstellen

short_open_tag=On

in php.ini

Und starten Sie Ihren Apache-Server neu.


54
Wenn PHP als Apache-Modul ausgeführt wird, können Sie es auch in einer .htaccess-Datei festlegen: php_flag short_open_tag on
Álvaro González

12
Am lilienreichsten in/etc/php5/apache2/php.ini
Benjamin Crouzier

@pinouchon, seedeg schrieb, dass er zu Windows wechselt, aber Ihr Kommentar hilft mir :)
Zeile

7
Verwenden Sie php --ini, um die geladene Konfigurationsdatei zu finden (Geladene Konfigurationsdatei: /etc/php5/cli/php.ini)
Wietse

Wenn Sie xampp in Windows verwenden, öffnen Sie bitte das XAMPP-Kontrollfeld, klicken Sie auf die Schaltfläche KONFIG und gehen Sie zur Option PHP (php.ini).
Praful Rajput

80

Dies kann durch Aktivieren von short_open_tag in der php.ini erfolgen :

short_open_tag = on

Wenn Sie keinen Zugriff auf die php.ini haben, können Sie versuchen, sie über die .htaccess- Datei zu aktivieren. Möglicherweise hat das Hosting-Unternehmen dies jedoch deaktiviert, wenn Sie Shared Hosting verwenden:

php_value short_open_tag 1

Für die Leute, die denken, dass short_open_tags ab PHP 5.4 eine<?= ... ?> schlechte Praxis sind, wird der Shorttag überall unterstützt , unabhängig von den Einstellungen. Es gibt also keinen Grund, sie nicht zu verwenden, wenn Sie die Einstellungen auf dem Server steuern können. Auch in diesem Link gesagt: short_open_tag


5
Kurze offene Tags sind nicht unbedingt eine schlechte Praxis (ich versuche hier offen zu bleiben), sondern nur, weil Rasmus et al. Die Entscheidung, sie in PHP5.4 standardmäßig zu unterstützen, bietet keine Rechtfertigung für ihre Verwendung. Wenn Sie sie verwenden, kann dies zu einer Abhängigkeit führen, die später unerwünscht ist, oder zu Verwechslungen mit XML führen. Einige gute Diskussionen hier: stackoverflow.com/questions/200640/…
Ian Lewis

1
Ian. Wir sprechen nicht über das <? echo $var ?>kurze offene Tag, sondern über das <?= $var ?>kurze offene Tag. Afaik XML sollte nicht betroffen sein.
RJD22

Wir haben einen PHP-Codierungstest und erhalten gelegentlich Einsendungen, bei denen das <? = Short-Tag verwendet wurde. Leider ist die Annahme, dass dieser Stil überall verwendet wird, ein wenig naiv und stammt oft von Entwicklern, die mit einer ASP-Diät aufgewachsen sind. Natürlich ist es verfügbar, aber seine Verwendung ist eine Mikrooptimierung und wird aus Gründen der Portabilität fehlschlagen, was eine Schande ist.
Ian Lewis

6
@ IanLewis Ich stimme nicht zu. Das PHP Short Tag hat nichts mit ASP zu tun. Der beste Grund, warum Sie verwenden möchten, <?= ist das Templating, und ich denke, es ist ein ziemlich gültiger. Andere Vorlagensprachen wie Schnurrbart verwenden ebenfalls kurze einfache Tags {{var}}. PHP wird oft als Vorlagensprache verwendet und muss <?php echo $var ?>viel hässlicher sein als <?=$var?>in Inline-HTML.
RJD22

Es ist eine interessante Debatte und wird sehr subjektiv. Ich glaube nicht, dass schöner Code notwendigerweise besser ist als Code, der ein bisschen von der inhärenten Hässlichkeit zeigt. Meine eigene Ansicht hier ist, dass die <? = $ Var?> Version viel überfüllter und weniger lesbar aussieht als die offenere, aber längere Version. Die Verknüpfung mit ASP muss eine gemeinsame Wahrnehmung sein, da mehrere Entwickler, die ich kenne, alle dieselbe Verknüpfung ohne Aufforderung herstellen.
Ian Lewis

19

Dies kann durch Aktivieren von short_open_tag in der php.ini erfolgen:

1.Um die Datei php.ini zu finden, führen Sie sie in der Kommentarzeile aus

 php --ini

Sie werden so etwas bekommen,

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

Siehe 2. Zeile der Kommentarausgabe. Die Datei befindet sich im angegebenen Pfad.

2.Öffnen Sie die Datei php.ini und suchen Sie short_open_tag. Standardmäßig wird es in offgeändert on.

3. Starten Sie den Server neu und führen Sie diesen Kommentar aus

service httpd restart

Vielen Dank


18

So legen Sie kurze Tags fest, die über ein Vagrant-Installationsskript unter Ubuntu geöffnet werden sollen:

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

12

Ich kann sehen, dass alle obigen Antworten nur teilweise richtig sind. In Wirklichkeit verfügen alle PHP-Apps des 21. Jahrhunderts über FastCGI Process Manager (php-fpm). Sobald Sie also php-info () in Ihr test.php-Skript eingefügt und den richtigen Pfad für php.ini überprüft haben

Go to php.ini and set short_open_tag = On

WICHTIG: Dann müssen Sie Ihren PHP-Fpm-Prozess neu starten, damit dies funktionieren kann!

sudo service php-fpm restart

und starten Sie schließlich Ihren Nginx / http-Server neu

sudo service nginx restart

2
In meinem Fall: Sudo Service php7.0-fpm Neustart
Sampath Perera

sudo service php-fpm restart funktioniert für jede Standardversion von PHP, die Sie auf Ihrer Box installiert haben, es sei denn, Sie haben mehrere Versionen. In diesem Fall müssen Sie die Version angeben, auf die Sie sich beziehen
Eddy Ferreira

1
Nur ein Neustart von Nginx hat mir nicht geholfen. Tatsächlich zeigte die Funktion phpini () weiterhin short_open_tag als Aus an. Ich habe gerade den Server neu gestartet und es hat funktioniert. Etwas drastisch, aber immer noch schneller als die Forschung, warum ...
Fran Marzoa

10

Sie müssen short_open_tags aktivieren.

short_open_tag = On

10

Befolgen Sie so einfach die folgenden Schritte:

  1. Zur php.iniDatei gehen
  2. Finde es short_open_tagund setze es aufon

    short_open_tag = On
  3. Starten Sie den Server neu


9

In CentOS 6 (auch auf Centos 7 getestet) können Sie short / open_tag in /etc/php.ini nicht für php-fpm festlegen. Sie werden Fehler haben:

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

Sie müssen die Konfiguration für Ihre Site bearbeiten, die Sie unter /etc/php-fpm.d/www.conf finden. Schreiben Sie am Ende der Datei:

php_value[short_open_tag] =  On

Musste das auf einer Debian Jessie machen. Dies gilt möglicherweise für alle PHP5-FPM-Installationen.
Bertrand

7

Wenn Sie Ubuntumit verwenden Apache+php5, müssen Sie in aktuellen Versionen an zwei Stellen wechselnshort_open_tag = On

  1. /etc/php5/apache2/php.ini - Dies gilt für die Seiten, die über Ihren Webserver (Apache) geladen wurden.
  2. /etc/php5/cli/php.ini- Diese Konfiguration wird verwendet, wenn Sie Ihre PHP-Dateien über die Befehlszeile starten php yourscript.php, z. B .: - Dies gilt für manuell oder Cronjob ausgeführte PHP-Dateien direkt auf dem Server.

6

Wenn Sie Ihre Datei php.ini bearbeiten, denken Sie daran, Ihren Dienst (apache2 usw.) neu zu starten, damit die Änderungen an php.ini wirksam werden


5

Für Wamp Server-Benutzer gibt es einen einfacheren Weg: Sie können diese Einstellung aktivieren, indem Sie einfach (links) einmal auf das WampServer-Symbol klicken und PHP -> PHP-Einstellungen -> kurzes offenes Tag auswählen. Warten Sie eine Sekunde, dann startet WampServer automatisch Ihr PHP und auch seinen Webdienst neu.

ursprünglich von: 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

Wenn Sie xampp verwenden, werden Sie feststellen, dass die Datei php.ini zweimal short_open_tag erwähnt hat. Aktivieren Sie den zweiten für short_open_tag = On. Der erste ist auskommentiert und Sie könnten versucht sein, ihn zu kommentieren und zu bearbeiten, aber er wird von einem zweiten short_open_tag überschrieben


1

Wenn Sie xampp in Windows verwenden, gehen Sie bitte wie folgt vor

  1. Öffnen Sie das XAMPP-Bedienfeld.
  2. Klicken Sie auf die Schaltfläche KONFIG.
  3. Gehen Sie zur Option PHP (php.ini).

Suchen Sie short_open_tag mit dem Dienstprogramm Strg + F.

Du wirst finden ;short_open_tag

Bitte entfernen Sie das Semikolon (;) aus der Zeile.

und behalte es als short_open_tag = on

Starten Sie abschließend Ihren Apache-Server neu


0

Um short_open_tag für eine bestimmte Domain mit php-fpm zu aktivieren, müssen Sie Folgendes bearbeiten:

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

Dabei ist xxxxx die Socket-Nummer der Domain.

Und füge hinzu: php_value [short_open_tag] = On


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

Das funktioniert unter PHP7.2 unter Ubuntu 16, dieselbe Antwort wie oben von Bradley Flood, obwohl sich das Verzeichnis, in dem die Konfigurationsdatei gespeichert ist, geändert hat.

Sie können auch die Version in der PHP-Zeichenfolge ändern, um sie an Ihre aktuell installierte Version anzupassen.



-2

Ich habe den short_open_tag auf meiner aws centos 7-Instanz und php7 (PHP 7.0.33 (cli) (erstellt: 6. Dezember 2018 22:30:44) (NTS)) in Aus auf Ein geändert, aber er spiegelt nicht die PHP-Infoseite wider und der Code. Also verweise ich möglicherweise auf Dokumente und finde eine Lösung für meinen Fall. Fügen Sie nach dem short_open_tag eine zusätzliche Zeile als asp_tags = On hinzu nach dem Neustart von Apache. Es funktioniert mit dem Code und ich gehe die Ausgabe korrekt

php.ini Datei

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

Stellen Sie das asp_tags = Onund short_open_tag = Onin beiden Dateien ein \apache\Apache2.2.21\bin\php.iniund \bin\php\php5.3.8\php.ini starten Sie den Apache-Server neu.


6
asp_tags? wozu?
Ihr gesunder Menschenverstand

1
asp ist höchstwahrscheinlich ein Tippfehler. Warum kann die Community @kal nicht nur ein wenig Gnade erweisen?
n8bar
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.