[英]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引擎將處理傳遞給它的任何內容。
如果.h文件“缺少” <?php
指令,那么你可能必須從include切換到類似:
eval( file_get_contents("file.h") );
我個人盡量避免使用eval,但有時候別無選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.