Archive

‘專業技術’ 分類過的Archive

如何同時在Apache運行多版本的php(在windows上)

2021年1月23日 尚無評論

本次升級最大的動作之一就是把先前一直想要升級PHP的念想給實現了,因為目前這台是PHP5,而且上面還有其它服務在運行不方便直接升級

所以就只好在同一個apahce實作同時間運行多版本的PHP了

一開始看了一些文件,原本是想用最單純的方式 VirtualHost 再搭配使用不同版本的PHP engine ,看似可以,網路上好像也有蠻多人有類似這樣的說法

但實測結果,這是不可行的,至少在windows 環境下是不可行的,因為會遇到 這個警訊「Only first PHPINIDir directive honored per configuration tree – subsequent ones ignored」

因為php.ini 的路徑只能設定一個,就算在VirtualHost 裡設定也不行,只要出現兩次也會報錯,但因為php5 和php7差異太大,如果是同php5.5 or php5.6,那採用同一個 php.ini或許還是可行,但看來這方向就要調整才行。

後來改採 Apache FastCGI ASF module的整合方式,利用執行CGI的方式執行PHP來達到運行多版本,廢話不多說,直接說我的作法:

  1. 到此連結 https://www.apachelounge.com/download/VC15/  下載mod_fcgid ,要注意你的VC版本,不合就自己換。
  2. 解開後mod_fcgid 後放到apahce modules目錄
  3. 修改apahce conf/httpd.conf加上

    • LoadModule fcgid_module modules/mod_fcgid.so
    • 解開 Include conf/extra/httpd-default.conf  
    • 如果 Include conf/extra/httpd-vhosts.conf 沒解開也一定要解開才行
  4. 修改conf/extra/httpd-default.conf 加上以下片斷在最下方

    FcgidInitialEnv PATH "c:/php-5/;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;"
    FcgidInitialEnv SystemRoot "C:/Windows"
    FcgidInitialEnv SystemDrive "C:"
    FcgidInitialEnv TEMP "C:/WINDOWS/Temp"
    FcgidInitialEnv TMP "C:/WINDOWS/Temp"
    FcgidInitialEnv windir "C:/WINDOWS"
    FcgidIOTimeout 64
    FcgidConnectTimeout 16
    FcgidMaxRequestsPerProcess 1000
    FcgidMaxProcesses 50
    FcgidMaxRequestLen 8131072
    # Location of php.ini
    FcgidInitialEnv PHPRC "c:/php-5/"
    FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000
    <Files ~ "\.php$">
      AddHandler fcgid-script .php
      FcgidWrapper "c:/php-5/php-cgi.exe" .php
      Options +ExecCGI
    </Files>
    
  5. 修改你的conf/extra/httpd-vhosts.conf 在你準備要用PHP7的domain Virtual Host之中加上以下設定 

    FcgidInitialEnv PHPRC "c:/php-7"
    <Files ~ "\.php$">
    	php_flag engine off
    	AddHandler fcgid-script .php
    	FcgidWrapper "c:/php-7/php-cgi.exe" .php
    </Files>
    
    
  6. 再重啟Apache,就完成啦,實測一下兩個不同的domain 就分別顯示不同的版本

目前大多人的寫法都是把多版本PHP運行都利用mod_fcgid搭配VirtualHost 來實現,但我這裡的作法就是和別人不一樣,原本的PHP作法我都不動,我是直接在想要的VirtualHost  domain  加上mod_fcgid 來實現運行指定的PHP版本 ,我發現這樣用之後Include conf/extra/httpd-default.conf   這個不使用 也不用加也不會有任何影響

另外,原本在測試使用基本方式達到運行多版本的PHP,卡在php.ini 設定上,我有發現有文章提及不設定php.ini DIR Path,改指向使用php 程式路徑中的ini,利用windows PATH參數指定搜尋的路徑,可能是一條可行的路,不過我都試成功了就不再多花時間去TRY了,提供以下連結,讓有興趣的人可以去試試看(不過文章有點舊請要有心理準備)

Windows環境讓PHP4與PHP5共存,使用Apache

Categories: PHP Tags: ,

如何排除PHP Fatal error: Uncaught Error: Call to undefined function split()

2021年1月22日 尚無評論

在更換wordPress改使用php7後,在前端及後端編輯器時又發生問題啦,又要debug 了,查了一下出現了「 Fatal error: Uncaught Error: Call to undefined function split() 」錯誤

查了一下,原來是php7 已停用 split(),所以就報錯啦,而這問題出錯在我安裝的sociable外掛上,最新版都無法排除看來這套件也很久沒再更新了,先排除此問題之後再來看看是否要更換此外掛

找了一下資料,目前可以使用 preg_split() 或 explode() 來替代split() 

if (count(explode("Counter",$sitename))>1){
//if (count(split("Counter",$sitename))>1){

	$link.= $href;

}else{

$link .= '<a title="'.$sitename.'" class="'.$sociable_options['icon_option'].'_'.$sociable_options['icon_size'].'" style="'.$style.'" rel="nofollow" ' . $target . ' href="' . $href . '">' . "" . '</a></li>' ;

}

 

照著上面這樣改,就可以啦。

 

參考資料:

How to fix the error with split() in php?

Categories: PHP, 部落格更改誌 Tags: ,

如何排除WordPress Fatal error: ‘break’ not in the ‘loop’ or ‘switch’ context

2021年1月20日 尚無評論

這次除了升級wordPress,也一併從php5版 升級php7,所以同時間做這麼多調整,就等於拿石頭砸自己的腳 哈 哈

好吧都砸腳了,當然還是要搞好才行,在升上去php7後,原本可以用的wordPress ,忽然在一些功能上變成不能執行了,只好再追查下去

首先,將debug mode打開一看,才能找到問題點(如下圖),看來是套件衝突到了

查了一下,php 7.0以上版本,不允許 break 在  for 或 foreach 、switch 之外的地方出現,所以報出錯誤,排除的方式很簡單

就是去找到該路徑的程式,都有行數了,找了一下該行數,多半這錯誤的行數,是可以直接註解掉 無意義的程式,就大膽的註解掉吧

再重新運行後就可以正常了。

Categories: PHP, 部落格更改誌 Tags: ,

如何重新啟用Windows排除KMS 錯誤0xC004F074

2020年8月19日 尚無評論

不知為何,被客戶要求要安裝他們的office 及officescan後 我的notebook授權竟然不見了,雖然還是可以用,但一直看到 啟用windows 浮水印  就覺得很討論

所以找了一下如何重新授權,試了一下竟然跑出來錯誤0xC004F074

Google了一下,發現多半是在講時區時間不對或是 software protection 服務未啟動 ,所以先檢查一下這兩項

果然,software protection 先前好像為了效能被我停用了 哈~把服務打開後再試一次,還是一樣的問題

只好再試別招,用了 Slmgr.vbs 指令重下授權金鑰 還是不行  這裡就省略說明了

因為剛剛試了怪招,現在自己的金鑰要先找出來,先下以下指令找出原廠在BIOS寫入的大量授權金鑰

	
		wmic path softwarelicensingservice get OA3xOriginalProductKey
	

 

然後參考以下這篇如何查詢產品金鑰

https://answers.microsoft.com/en-us/windows/forum/windows_8-windows_install/get-error-0xc004e016-on-a-computer-running/399c811d-5e7a-4d32-b5a9-d90b4670d40b

在CMD下(請用最大權限)執行

slui.exe 3

跳出啟用視窗後,輸入剛剛找到的序號,哈終於重新授權成功啦

Categories: 小技巧, 系統設定 Tags:

如何在Eclipse複製一個已存在的專案

2018年10月24日 尚無評論

如何從不同的Eclipse workspace複製一個已存在的專案呢?  這個問題很簡單,但我常常忘記,導致浪費了不少時間, 所以還是花點時間寫下來 增強一下記憶。

以往很直覺的想法都以為我從workspace下, copy 我要的專案目錄,換成我想要的專案目錄名稱即可,但這招似乎沒用,所以正確的作法步驟應該如下:

  1. 先切換你的專案workspace,先切換到新命名的workspace
  2. 再利用選單上的Import功能
    snap05622
  3. 再選擇 General > Existing Projects into Workspace,按Next
    snap05625
  4. 然後再選擇你要複製的workspace,再選擇你要的Project,要注意Options一定要勾選Copy projects into workspace,不然他只會指向不會把你想要複製的Project Copy到你的workspace。
    snap05626
  5. 這樣就完成了作業。

其實真的很簡單,但往往第一步都錯了,所以還是寫下來加深記憶。

Categories: JAVA, 小技巧, 程式開發 Tags: ,
分頁: 1 2 3 4 5 6 7 8 9 10 ... 26 27 28 下一頁