2012-09-25 53 views
2

讓我先說,我不希望這成爲您是否應該使用短標籤的討論。我試圖讓一個遺留系統運行,它有成千上萬的php代碼文件,並且在沒有任何錯誤的情況下更改它們都不是我們想要使用的解決方案。短標籤,但代碼不執行

這就是說,我在php.ini中啓用了短標籤。我已通過在相關文件中運行phpinfo();並檢查該設置,驗證了該設置正在生效。但是,<?<?=短打開標記內的代碼未被執行,它只是打印出來,就好像它是HTML一樣。有人知道這可能發生的原因嗎?在正常的<?PHP開放標籤裏面的PHP代碼正在正常執行。最初服務器運行的是PHP 5.3,由於5.4中短標籤的變化,我們嘗試升級到5.4.7,並且仍然沒有運氣。

要重複評論中的內容:我將phpinfo()添加到一個文件中,該文件使用短和常規打開標記並在瀏覽器中打開它。執行完整標籤,簡而言之沒有。我沒有從命令行運行它。 Apache重新啓動。編輯的php.ini文件是主要的/etc/php.ini文件。沒有.htaccess文件更改webroot中的設置。

+0

您是否在同一個確切文件中嘗試了'<?'和'<?php'? – 0b10011

+1

你是否從命令行檢查'phpinfo()'?命令行和apache模塊PHP可能使用不同的'php.ini'文件。另外,做短時間打開的標籤可以在你正在做'phpinfo()'的地方工作嗎? – Jon

+0

你在共享的主機上?有時他們有一個「Master」php.ini,在某些指令中不能被本地的php.ini覆蓋。另外,CLI自己有一個php.ini,你可能會修改錯誤的文件。 –

回答

0

您是否在更改php.ini文件後重新啓動了Web服務器?你必須這樣做才能使設置生效。

+0

是的,服務器已重新啓動。這可以通過放置在文件中的'phpinfo()'來進一步驗證,該文件返回短標籤的正確值。 –

0

唯一看起來沒有選中的是來自ini文件的值被覆蓋在某處。

也許過度開發的開發者禁用它在.htaccess文件中,ini_set()somewhere else

+0

我也檢查過 - 沒有.htaccess文件設置它的方式,我甚至嘗試'ini_set()'我自己,強迫它。 –