2010-03-19 32 views
31

Tôi chỉ cần cài đặt php 5.3.1 trong máy chủ Linux của tôi và bây giờ công việc cũ của tôi mà tôi sử dụng để viết với thẻ không hoạt động ở tất cả ..<? ?> thẻ không làm việc trong php 5.3.1

Xin hãy giúp tôi ra .. Tôi có thể giải quyết vấn đề này bằng cách nào?

+0

[đã giải quyết] http://php999.blogspot.in/2015/05/how-to-enable-php-short-tags.html ----- CHECK IMAGE ----- – indian

Trả lời

67

Để kích hoạt thẻ ngắn, cho phép short_open_tag chỉ ini theo một trong các cách sau đây (có lẽ hầu hết không phải tất cả trong số họ sẽ làm việc cho bạn):

  • thiết lập các chỉ thị short_open_tag = On trong php.ini của bạn (cách được đề xuất);
  • gọi ini_set("short_open_tag", 1); trong mã của bạn;
  • thêm dòng sau vào file .htaccess:

    php_value short_open_tag 1


More giải thích:

Nó không khuyên bạn nên sử dụng thẻ ngắn (<? ?>). Bạn nên sử dụng các thẻ có độ dài đầy đủ (<?php ?>). Cú pháp ngắn không còn được dùng nữa và nếu bạn muốn làm cho ứng dụng của mình được di động, thì có thể có thể rằng các thẻ mở ngắn không được phép trên máy chủ khác và do đó ứng dụng của bạn sẽ bị hỏng.

Mặt khác, viết tắt echo <?= $var ?>enabled by default since PHP 5.4 regardless of php.ini settings và sẽ không được chấp nhận. Bạn có thể sử dụng nó thay vì <?php echo $var; ?>

Và đối với hành vi mặc định:

------------------------------------------------ 
php.ini values : short_open_tag 
------------------------------------------------ 

PHP 4, 5_0 
* Default behaviour : on 
* php.ini-dist  : on 
* php.ini-recommended : on 

PHP 5_1, 5_2: 
* Default behaviour : on 
* php.ini-dist  : on 
* php.ini-recommended : off 

PHP 5_3: 
* Default behaviour : on 
* php.ini-development : off 
* php.ini-production : off 

Và lý do của các thẻ mở ngắn nản:

Chỉ thị này xác định có hay không PHP sẽ nhận ra mã giữa
<??> thẻ là nguồn PHP cần được xử lý như vậy. Đã được
được đề xuất trong vài năm mà bạn không sử dụng thẻ ngắn "cắt ngắn" và
thay vì sử dụng kết hợp thẻ <?php?> đầy đủ. Với việc sử dụng rộng rãi của XML và sử dụng các thẻ này bằng các ngôn ngữ khác, máy chủ có thể dễ dàng bị nhầm lẫn và kết thúc phân tích sai mã trong ngữ cảnh sai. Nhưng vì
đoạn cắt ngắn này đã là một tính năng trong một thời gian dài, hiện tại vẫn còn
được hỗ trợ cho khả năng tương thích ngược, nhưng chúng tôi khuyên bạn không nên sử dụng chúng.

Cũng lưu ý này đã từ chối RFC về các thẻ mở ngắn cho các mẫu: http://wiki.php.net/rfc/shortags

+0

Theo http : //php.net/manual/en/ini.core.php, mặc định là "1", có vẻ như tôi đã bật. Tôi hy vọng nó sẽ bị vô hiệu hóa theo mặc định là tốt, mặc dù. – OregonGhost

+0

@OregonGhost: Cũng được mô tả ở đây: http: //stackoverflow.com/questions/1386620/php-echo-vs-php-short-tags * Thực ra, trong tệp sản xuất php.ini được cung cấp với PHP 5.3.0, chúng bị tắt theo mặc định * Tôi đoán từ 5.3 trên nó được bật theo mặc định. –

+0

@OregonGhost: bạn chính xác, nhưng hầu như luôn có một cấu hình ví dụ được cung cấp sẽ ghi đè các giá trị mặc định dựng sẵn và chọn cài đặt thích hợp. Tôi tin rằng php.ini-khuyến khích đặt chúng để tắt (mặc dù không thể chắc chắn mà không kiểm tra). –

0

có thể cấu hình mới của bạn doesnt alllow thẻ ngắn. Chỉ cần sử dụng <?php ?>. Đó là thực hành tốt hơn anyway.

Nếu bạn vẫn muốn sử dụng chúng, bạn có thể short_open_tag chỉ thị. Cũng nên nhớ rằng sẽ không hoạt động nếu bạn đã tắt các thẻ ngắn.

Lý do chính cho việc này là để bạn có thể sử dụng thẻ Xml nội tuyến.

+1

Không có nhiều lý do. –

+3

Trên thực tế, nếu mã của bạn sẽ chạy trên các máy chủ khác mà bạn không có quyền kiểm soát. Sử dụng sẽ đảm bảo tính di động. – Sinan

+0

Điều này * có thể * là một lý do. Nhưng đối với bản án của riêng mình, không phải là khuyến cáo nghiêm ngặt. Và thực sự hầu hết các mã được viết không phổ biến rộng rãi. Và có nhiều lựa chọn hệ thống mẫu. Và nếu ai đó sử dụng PHP làm hệ thống mẫu, việc sử dụng thẻ dài chỉ là vô lý. Chỉ cần chọn một hệ thống mẫu khác và quên câu hỏi này ở tất cả –

10

Có vẻ như bạn đã đặt short_open_tags thành "Tắt" trong tệp php.ini của mình. Thử đặt nó thành "Bật" và khởi động lại apache.

1

Bạn rất có thể cần bật các thẻ ngắn trong tệp cấu hình PHP của mình. Mà không biết cấu hình của bạn, tôi không thể nói nơi bạn sẽ tìm thấy nó, nhưng bạn đang tìm php.ini (rất có thể là một nơi nào đó như /etc/php.ini).

Ở đó, cài đặt bạn đang theo dõi là short_open_tags. Xem here cho tất cả các cài đặt cấu hình lõi cho PHP. Tuy nhiên như những người khác đã đề cập, sử dụng các thẻ ngắn có thể không phải là chiến lược tốt nhất. Here là một cuộc thảo luận tốt về các lý do (cho và chống lại).

+0

Thảo luận tốt với lý do sai. –

+1

@Col. Shrapnel: Làm thế nào? Tôi có xu hướng luôn ưu tiên các thẻ dài trên các thẻ ngắn vì một số lý do được mô tả ở đó. Thành thật mà nói tôi nghĩ rằng ít nhất một phần của nó xuống sở thích cá nhân. Miễn là bạn nhận thức được các tác động theo cách nào đó, bạn có thể sử dụng những gì bạn muốn. –

+0

Hiện tại tôi không nói về các tùy chọn mã hóa, tôi đang nói về những tin đồn sai. –

0

Nếu bạn sử dụng wamp hoặc xamp, thật dễ dàng để kích hoạt chúng. Chỉ cần nhấp vào biểu tượng-> php server-> setting-> cho phép thẻ ngắn mở

Tốt hơn là không sử dụng chức năng này. Ví dụ xml sử dụng cùng một cách để mở tiêu đề trong tài liệu.

Các vấn đề liên quan