見龍在田 / Resin / apache2.2 + resin4 的PHP解析問題

0 0

   

apache2.2 + resin4 的PHP解析問題

2012-02-29  見龍在田
apache2.2 + resin4 的PHP解析問題
 
雖然resin4包含了Quercus,能夠解析PHP5腳本,但是因為這玩意不是中國人開發的,沒有充分考慮到多字節字符的問題,全部用的latin1編碼,而且還硬編碼在源代碼中了,很是扯淡!
最近有一個PHP的項目需要發佈,於是照常發佈到了apache中,並在resin的conf/app-default.xml配置文件中將PHP相關配置給註釋掉了,以為這樣就可以將PHP的解析交給apache處理了,就像之前的resin3一樣。結果卻證明完全想錯了,經過一番折騰,解決辦法如下:
resin的conf/app-default.xml還得照改不誤,但是還得修改conf/resin.xml文件,在這個文件中找到以下位置:
<cluster-default>
    <!-- shared webapp jars for non-classloader-aware libraries -->
    <web-app-default>
      <class-loader>
        <library-loader path="${resin.home}/webapp-jars"/>
      </class-loader>
    </web-app-default>
    <!-- standard servlet behavior, including .jsp, .php, and WEB-INF -->
   <resin:import path="classpath:META-INF/caucho/app-default.xml"/>
 
請注意上面紅色加粗的這行,這行的意思是從classpath路徑中搜尋META-INF/caucho/app-default.xml文件,熟悉java開發的朋友應該知道classpath的搜索路徑不僅僅包括文件夾,還可以是jar包,而META-INF/caucho/app-default.xml恰恰就在resin的lib/resin.jar包中,這個包中果然也有一個app-default.xml文件,內容與conf/app-default.xml一模一樣,如果想讓resin徹底的不解析PHP,那麼將這個文件中的PHP配置也註釋掉就可以了。但在這裡我不這麼做,因為要解包,改好了還要再重新打包,很討人嫌!咱不是將conf/app-default.xml改好了嗎?那就把這行給給換掉不就行了嗎?改成下面這行即可:
        <resin:import path="${__DIR__}/app-default.xml"/>
(注意:這行改了之後,resin-admin就不能用了,提示404文件未找到。找到resin-admin的WEB-INF目錄,查看resin-web.xml文件,發現這個文件中加載了Quercus,那麼按道理resin-admin應該還是由resin解析的,不應該不能用,折騰了好久,猛然想到是不是歡迎頁中沒有index.php呢?仔細一查看,果然如此。冤枉死了好多腦細胞。)
這個${__DIR__}在resin配置文件中是代表resin的conf目錄路徑的,這句的意思也就是導入conf目錄下的app-default.xml文件。好了,現在刷新一下瀏覽器,PHP應用果然交給apache處理了,不過問題又來了,雖然PHP的處理權是交給apache了,但頁面卻顯示源碼,為了解決這個問題,我用PHP寫了個shell腳本-test.php,內容如下:
#!/usr/bin/php -q
<?
echo "a test!~~";
?>
保存退出,並修改為可執行權限:
chmod +x test.php
運行它:./test.php
結果發現控制台上也打印出源代碼,如下所示:
[root@www shine]# ./test.php
<?
echo "a test!~~";
?>
於是可以肯定此問題不是因為apache不能識別php腳本,而是php本身的問題,根據以往的經驗,突然想到PHP腳本的開始/結束符可以用<? ?>,也可以用<?php ?>,前者是短風格,後者是長風格,具體可以使用哪種風格,需要修改php.ini文件中的相應配置項,於是編輯/etc/php.ini,找到 short_open_tag = Off  這一行,將Off改成On即可,保存退出,重啟apache,再刷新瀏覽器,php解析恢復正常,問題解決。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。如发现有害或侵权内容,请点击这里 或 拨打24小时举报电话:4000070609 与我们联系。

    猜你喜欢

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多
    喜欢该文的人也喜欢 更多