簡體   English   中英

試圖嵌入使用的第三方Javascript <?js= value ?> ,我怎么能阻止PHP解析“

[英]Trying to embed 3rd party Javascript that uses <?js= value ?>, how can i stop php from parsing the “<?”

我在CMS系統的瘋狂混亂中工作,其中php,javascript和html都在模板中。 我試圖從第三方網站下載代碼以獲得集成功能,但是他們有以下形式的javascript:

<script type="lib">
Hello, <?js= firstName ?>!
</script>

PHP解釋器看到並做了它的事情,因此整個模板出錯了。

任何人都知道如何包裝這個代碼塊以防止PHP解釋器關心它?

提前致謝!

如果禁用PHP Short-tags不是一個選項,你可以簡單地使用PHP輸出所述字符串,所以你會得到這樣的東西:

Hello, <?php print "<?js= firstName ?>"; ?>!

禁用PHP短標簽 ,你應該沒有問題。

在啟用了短打開標記的PHP文檔中,PHP解釋器將看到<? 部分<?js標記並將嘗試將其解析為PHP,從而導致此錯誤:

Parse error: syntax error, unexpected T_STRING in ... on line ...

要解決此問題,請禁用PHP的開放標記的簡短格式( <? ?> )。

這將禁用<? <?=在您的PHP腳本中。 如果您的網站只使用<?php標簽,那么這樣做是安全的; 如果它使用<? 同樣,這樣做是不安全的,因為你的腳本將不再按預期運行。

您的Web主機或系統管理將有兩種方法將Apache配置為使用PHP

  • Apache將PHP解釋器加載為Apache模塊
  • Apache將PHP解釋器作為CGI二進制文件運行

您將在下面使用哪種解決方案取決於Apache如何在您的環境中運行PHP *。

在Apache的.htaccess文件中,放置以下內容:

# PHP as an Apache Module
php_value short_open_tag 0

在全局或本地php.ini文件中,放置以下內容:

# PHP as a CGI Wrapper
short_open_tag = Off

在任何一種情況下,您都需要在進行任何配置更改后重新啟動Apache,以確保獲取新設置。


注意:如果您的服務器配置為將PHP作為Apache模塊運行,那么您可以選擇使用php.ini或Apache .htaccess文件。 但是,如果您的服務器將PHP作為CGI包裝器運行,那么您將只能選擇在本地使用php.ini文件來更改設置,因為Apache不再完全控制PHP。

當PHP作為CGI包裝器運行時,將PHP設置放入.htaccess文件將導致服務器拋出錯誤。

你碰巧在運行apache嗎? 這些文件是否與PHP分開存在? 如果是這樣,您可以使用.htaccess文件(如果您有權修改它,則使用httpd.conf)執行以下操作:

<FilesMatch "\.template_file_ext">
    php_flag engine off
</FilesMatch>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM