2024年6月24日 星期一

PHP 於windows平台啟動 Unable to load dynamic library 'ext\\php_curl.dll' 如何排除?

 

太久沒碰PHP 設定了  在要使用curl時才發現 出現 Unable to load dynamic library 'ext\\php_curl.dll' 問題,原以為是版本或extension 路徑沒指向對,瞎找了一陣子,但後來想想 其它的dll 都可以載入正常為啥就php_curl  和OpenSSL 不能呢?


後來查到原來PHP 在5.6.6 之後可能會有因 php_curl.dll 和 ssleay32.dll/libssh2.dll/libeay32.dll 有匹配的問題,導致模組無法正常啟動,這從LOG檔中只會和你說無法載入,但並沒告訴你是因為它所用到的LIB有問題而造成, 因此如果要修正此問題


就要在 Apache.conf 之中 於loadFile 時手動將會用到dll 設定載入上來,如下:


LoadModule php5_module "C:/php-5.6.40/php5apache2_4.dll"
AddType application/x-httpd-php .php
PHPIniDir "C:/php-5.6.40"
# load curl and open ssl libraries
LoadFile "C:/php-5.6.40/libeay32.dll"
LoadFile "C:/php-5.6.40/ssleay32.dll"
LoadFile "C:/php-5.6.40/libssh2.dll"

再重啟apache 即可正常載入使用

2023年3月24日 星期五

JAVA 連線 Mysql8 出現 Unknown initial character set index '255' received 排除方法

 在進行MYSQL 舊版本升級時,在升級後連線時發現出現 Unknown initial character set index '255' received 這個錯誤訊息,上網查了一下,原來是charset編碼的問題,可以透過mysql client參數的方式去調整連線的編碼方式,可以調整如下:


jdbc:mysql://xxx.xxx.xxx.xxx:3306/DB?useUnicode=true&characterEncoding=utf8


這樣就可以連線上了,除了這個charset的指定外,如要連Mysql8像還有useSSL參數也要指定,不然也是還是會再報出錯誤的

2023年3月23日 星期四

Java 連結 Mysql 8出現java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'排除方式

 升級資料庫升級到mysql8後,用JAVA程式連資料庫時出現了

java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'.

 的錯誤訊息

上網查了一下,

5.7版本是:default_authentication_plugin=mysql_native_password 8.x版本就是:default_authentication_plugin=caching_sha2_password

一般是要修改密碼加密規則。換回舊的加密方式但這種方式加密規則變舊的安全性應該會有所降低

所以最好的方式就是同時更新JDBC Driver,可到此連結下載 https://dev.mysql.com/downloads/connector/j/






取得最新的JDBC,即可正常連線。

2023年1月5日 星期四

Navicat Mysql 8出現1251- Client does not support authentication protocol 排除方式

 最近在升級系統,資料庫升級到mysql8後,用程式或第三方工具連資料庫時出現了

1251- Client does not support authentication protocol  

或 Unable to load authentication plugin 'caching_sha2_password' 的錯誤訊息

上網查了一下,發現mysql8之前的版本使用的密碼加密規則是mysql_native_password,但是在mysql8則是caching_sha2_password,所以需要修改密碼加密規則。

網路上的解法就是要連入改密碼規則,可以使用

输入use mysql和select user,host,plugin,authentication_string from user;  查看目前使用者的密碼加密規則,如要調整,請執行以下語法:

alter user 'root' @'localhost' identified with mysql_native_password by 'yourpassword';

但這種解法還是用舊有加密規則,所以如要用新版加密規則,你的第三方資料庫連線工具就要升級才行,像Navicat 升到最新就可以支援了

2021年6月21日 星期一

eclipse svn 安裝

 全新的Eclipse ,預設沒有版本控管的程式,所以就要另外加裝,目前已經有非常多資源也很好安裝套件,安裝的方式如下:


Step 1. 在上方選單 H > Eclipse Marketplace  




Step 2. 在Marketplace 下svn 關鍵字,即可找到相關資源
這裡要注意,第一個 Subversive 請不要安裝,因為中間會卡住,沒仔細看,看來版本可能不符,所以別浪費時間安裝再排除問題了,直接往下拉找subclipse 這項套件,就按下install吧


Step 3.就一直往下安裝吧 會有選擇套件,REVIEW LICENSES等 就一直往下走

在此我有遇到一個問題,這只是遇到未加簽的軟體警告,直接按install anyway 

這樣就裝完啦,這時再去New Project,就會看到SVN選項了
END








eclipse IDE for JAVA全新安裝在windows平台

十多年沒有重裝eclipse ,換新電腦就更新至最新版吧

Step 1 .  先到Eclipse官網 下載安裝版



下載windows x86_64,目前只有64位元可以選啦,下載後就直接執行安裝吧

Step 2. 執行安裝檔


然後目前可以選擇要裝哪什麼樣的IDE工具,真是方便,古早先前如要各版本都要不同的安裝檔下載,然後就選擇 Eclipse IDE for Java Developers  
這個版本,他可以內建安裝JRE,我是改自己安裝OpenJDK ,windows 編譯檔在此



不過要注意,目前這個版本eclipse他只支援JDK 11 以上,所以你的版本在這之下,是無法設定上去的

Step 3.  結束

就這麼簡單,現在安裝太容易了!!



2020年5月7日 星期四

PHP程式更新後確沒有更新,有沒有想到是程式碼cache(opcache)?


最近在維護一個客戶的PHP系統
建置及虛擬空間都是別人的,所以很多設定都是不明確的

因此程式碼調整後更新上去,發現似乎沒有作用
花了不少時間確認自己的寫法,最後確認應該不是自己的問題
才想到會不會是 cache  造成?

寫了幾隻小程式,新寫的程式一丟上顯示符合預期
再改再丟上去更新後,顯示還是舊的版本,Shit 真的猜中了

再用個phpinfo() 來看看設定

嗯.....出現了以下錯誤

Warning:phpinfo() has been disabled

很好,沒有php 沒有啟用 phpinfo ,多半管這麼多的,一定設定了很多怪東東
上網查了一下php 的 cache 解決方案

最多人在提的就是 APC  及OPcache

先來試試APC,查了一下 除了設定參數外,可以用以下函式來清除快取,這種最好測試了

apc_clear_cache();
執行後出現了  undefined function ...所以看來不是啟用APC
再來換OPcache,查了一下,一樣他有函式就可以清除快取,執行如下:

opcache_reset();
用了,哈~真的就是它,程式總算可以正常了


相關參考連結:
http://blog.roachking.net/blog/2012/11/30/apc-for-faster-php/
https://www.php.net/manual/en/function.opcache-reset.php