網頁

2023年11月21日

PHP如何無條件進位到小數第二位

PHP無條件進位到小數第二位的寫法如下:


<?php
echo decimal_ceil(3.1411412);


function decimal_ceil($value)
{
return ceil(round($value * 100, 1)) / 100;
}
?>

執行結果:

3.15



2022年5月19日

Oracle Cleint 11執行tnsping出現 Message 3511 not found 錯誤訊息

安裝Oracle Client 11後,執行tnsping指令出現下列訊息:


Message 3511 not found; No message file for product=NETWORK, facility=TNSMessage 3512 not found; No message file for product=NETWORK, facility=TNSMessage 3513 not found; No message file for product=NETWORK, facility=TNSMessage 3509 not found; No message file for product=NETWORK, facility=TNS


搜尋Google相關資料,有查到環境變數ORACLE_HOME沒有設定,也會發生這個情況,但在確定ORACLE_HOME有設定的情況下,問題依然存在,最終嘗試用別的關鍵字查詢,最終找到問題的原因,是%ORACLE_HOME%\network\mesg\裡面有缺少檔案,找運作正常且相同版本的電腦,將檔案複製過來,Tnsping指令就恢復正常。


檔案補齊之前,目錄%ORACLE_HOME%\network\mesg\只有2個檔案。

檔案補齊之前

檔案補齊之後,檔案多達23個,不過查看其他的電腦,有的只有17個或更少。

檔案補齊之後














檔案補齊之前跟補齊後執行tnsping指令的狀況。


2022年1月27日

ORA-28002 : the password will expire within 7 days 密碼過期問題

 Oracle密碼超過期限沒有變更密碼,則會出現「ORA-28002 : the password will expire within 7 days」錯誤訊息,只需要變更密碼就可以排除這個問題。





密碼變更指令:

sqlplus SHARE/gooD1dEa@MYDB

SQL> password

Changing password for SHARE

Old password:(舊密碼)

New password:(新密碼)

Retype new password:(再一次新密碼)

Password changed

SQL>


若不想要每隔一段時間就遇到這個錯誤,可以在變更密碼之前,先將密碼到期的限制取消,但不建議這樣子做。


取消密碼到期限制指令:

SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

執行完上述指令後,確認是否有變更成功(變更之前也可以先查看,正常LIMIT欄位值會是數字),當看到變成是UNLIMITED後,表示已經成功。 

select * from dba_profiles where profile = 'DEFAULT'


 

2022年1月17日

如何監控Apache網頁服務器狀態和程式負載

 Apache有內建mod_status模組,將模組啟用後,就可以監控網站和程式負載狀況。


使用phpinfo()或是/bin/http -M指令,確認是否有載入mod_status模組,若有則略過載入mod_status步驟。


使用phpinfo()查詢。


使用 /bin/httpd -M 指令,若有看到「 status_module (static)」字樣,則表示有載入mod_status。



載入Apache的mod_status

編輯httpd.conf設定檔。

vi /etc/httpd/conf/httpd.conf

在httpd.conf檔案內找到下列這一行。

#LoadModule status_module modules/mod_status.so

然後將前面的#符號去掉,存檔後並離開。

LoadModule status_module modules/mod_status.so


執行設定檔檢查,確定沒有錯誤後,再重新啟動Apache服務。

/bin/httpd -t




重新啟動Apache

service httpd restart

systemctl restart httpd

/bin/httpd -k restart


重新啟動Apache後,再確認mod_status是否有載入(使用phpinfo或httpd -m指令)。


一、設定mod_status監控,在httpd.conf加入紅字的部份。

<VirtualHost *:80> 

ServerAdmin html@example.com 

DocumentRoot /var/www/html/example.com 

ServerName example.com 

ErrorLog logs/example.com-error_log 

CustomLog logs/example.com-access_log common 

<Location /server-status > 

SetHandler server-status 

Order deny,allow 

Deny from all 

Allow from 192.168.0.100/32 或 myDomain.com  ##允許監看的用戶端

</Location> 

</VirtualHost>


二、啟用mod_status擴展,在httpd.conf加入一行。

ExtendedStatus On

執行設定檔檢查並重新啟動Apache服務。

httpd -t

重新啟動Apache

service httpd restart

systemctl restart httpd

/bin/httpd -k restart


三、訪問 mod_status 網頁

http://myhostname/server-status

若要每10秒重新整理網頁,則在後面加上refresh變數。

http://myhostname/server-status?refresh=10




2021年12月28日

ORACLE如何不區分大小寫查詢

其實ORACLE資料庫有參數可以設定不區分大小寫查詢,這邊介紹在不變更參數設定的情況下,使用ORACLE內建UPPER或LOWER函數來做到大小寫混查,UPPER函數的作用是將資料內英文字母全部轉成大寫,而LOWER函數則是全部轉成小寫。


語法說明:

select * from 資料表名稱 where upper(欄位名稱) = upper('查詢值');


英文字母轉換大寫的查詢方式:

select * from HR_EMPLOYEE where upper(ENGLIST_NAME) = upper('George Mary');

upper函數會先將"George Mary"轉換為"GEORGE MARY",再配合前面的upper(ENGLIST_NAME)轉大寫的語法,就能達到不區分大小寫混查的效果。


使用like語法範例:

select * from HR_EMPLOYEE where upper(ENGLIST_NAME) like upper('%George Mary%');