簡體   English   中英

在PHP中包含不同類型的文件

[英]Including different types of files in PHP

我接手了一個PHP項目,我試圖讓它在我的開發盒上運行。 我是開發人員,而不是系統管理員,因此我無法使其正常運行。

以前的開發人員使用.h文件來包含PHP。 我當前的配置是使用該.h文件並包含它而不執行它。 在我的apache配置中需要查找什么(或者是我的php.ini)?

編輯:

當我閱讀下面的評論之一時點擊了一些東西。 代碼使用ASP樣式標簽“ <? ”。 我已經在php.ini中打開了選項,並且根據phpinfo(),它已啟用,但是apache仍然只是將代碼包含為文本。

我只是檢查它並運行代碼與完整的開放PHP標簽“ <?php ”修復了問題。 話雖如此,我仍然希望它以另一種方式工作。

我正在使用最新版本的Macbook上運行代碼。 PHP 5.2.6,postgresql 8.3和apache 2。

該代碼適用於登台服務器,但我無法弄清楚它有什么區別。

編輯

Durrr ...我沒有在php.ini中啟用short_open_tags。

問題可能是你所包含的.h文件只是在沒有打開“ <?php ”標簽的情況下啟動到PHP代碼中?

來自包含文檔:

當包含文件時,解析將退出PHP模式並在目標文件的開頭進入HTML模式,並在結束時再次恢復。 因此,目標文件中應作為PHP代碼執行的任何代碼都必須包含在有效的PHP開始和結束標記中

PHP是一種解釋型語言,因此您無法在不執行文件的情況下“包含”該文件。 請記住'.h'只是一個文件擴展名,所以雖然之前的編碼器可能已經將PHP放在'.h'文件中,但它仍然只是PHP。

關於您遇到的問題的更多細節將會有所幫助。

你可以使用.htaccess文件並添加:

php_value auto_prepend_file /path/to/include-file.h


編輯

我剛剛讀到.htaccess只適用於php的模塊版本。

您應該將它們全部更改為.php擴展名。 但是,如果您要將它們保留為.h,則可以更改Apache中的映射。 它是Apache通過正確的解釋器運行文件,而不是PHP。 PHP引擎將處理傳遞給它的任何內容。

includerequire將執行包含的文件。 如果您正在使用readfile ,它只是回顯該文件而不將其視為PHP代碼。

如果.h文件“缺少” <?php指令,那么你可能必須從include切換到類似:

eval( file_get_contents("file.h") );

我個人盡量避免使用eval,但有時候別無選擇。

暫無
暫無

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

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