網頁

顯示具有 PHP 標籤的文章。 顯示所有文章
顯示具有 PHP 標籤的文章。 顯示所有文章

2021年11月5日 星期五

PHP Curl SSL certificate problem

 

CA files 

PHP.ini

curl.cainfo="C:\php\extras\ssl\cacert.pem"

PHP code

//Tell cURL where our certificate bundle is located.
$certificate = "C:\php\extras\ssl\cacert.pem";
curl_setopt($ch, CURLOPT_CAINFO, $certificate);
curl_setopt($ch, CURLOPT_CAPATH, $certificate);

 

相關資料:

2019年11月22日 星期五

Web 與 CLI 使用不同的 PHP.ini 設定

Apache 使用自已專用的 php.ini 設定檔,PHP CLI Version 可以另外採用自已專用的 php-cli.ini 設定檔。

PHP CLI Version 使用範例:程式執行時可自行指定要使用的 php-cli.ini 設定  ( php -c C:/PHP/php-cli.ini test.php ;  -c <path>|<file> Look for php.ini file in this directory )

或者輸入 php --ini 看看 Loaded Configuration Files 是不是 php-cli.ini ,是的話直接輸入 php test.php 也是與上方的範例的執行結果相同。

註:將 php.ini 複製並重新命名為 php-cli.ini,這個在 CLI Version 模式會自動的找到 php-cli.ini。但若改成其它名稱時就不會 (例如: php_cli.ini ),此時程式在自行指定要使用的 php 設定檔。這種做法也許是是更為安全的作法,如此在 CLI 模式其它使用者,在時用時原則上仍是採用與 Web 相同的設定的 php.ini 設定。有特殊需求時再自行指定特定的 php_cli.ini 設定檔。

相關參考:

2018年4月2日 星期一

PHPMailer 5.2.26 upgrade to 6.2.0

直接原來 5.X 版內所提供的 PHPMailerAutoload.php,這樣子做的主要目的在於降低修改的幅度。將這個檔案內原先的腳本直接置換為以下三行:
require('PHPMailer.php');
require('SMTP.php');
require('Exception.php');

若引用 PHPMailerAutoload.php 的檔案不多的話,就直接將 require('PHPMailerAutoload.php') 的部份刪除直接 require 上面三個需要引用的檔案。

並將原本 $mail = new PHPMailer; 的撰寫方式修改為 $mail = new PHPMailer\PHPMailer\PHPMailer;


測試環境:PHP7.4.13 , PHPMailer 6.2.0
目前的測試結果,這樣的修改方式是可以透過 PHPMailer 6.2.0 正常的發送信件。


相關資料:

2018年1月10日 星期三

MySQL 5.7 Incorrect datetime value '0000-00-00 00:00:00' 問題

MySQL 5.6 升級到 5.7,有些系統在寫入資料時會出現問題。
主要是因為 MySQL5.7 在日期格式做了點調整。

時間預設格式採用 0000-00-00 00:00:00 會造成資料無法寫入的狀況。

最簡單,不想要調整程式的做法如下:
調整 my.ini 將 sql-mode 內的 NO_ZERO_DATE 刪除即可。

相關資料:

2017年8月10日 星期四

Raspberry Pi 安裝時,螢幕沒有HDMI介面與鍵盤時的做法

螢幕沒有HDMI介面與鍵盤時的做法,也不想額外花費購買轉接器時:

因為 2016.11 後的版本SSH 預設是未啟動的狀態。在利用 Win32DiskImager將 Image 複製到 SD卡後,可以在 SD 卡內的根目錄內放一個名稱為 SSH 的檔案(無副檔名)。再將這張處理好的 SD卡插入到 Raspberry裝置內。

這樣就可以不用額外接著螢幕與鍵盤。可以直接透過 SSH來存取這台 Raspberry 裝置。
透過 SSH 連入此裝置 IP,預設登入預設帳密為:pi/ raspberry

安裝與相關資料整理

  • 新增登入帳號與停用預設帳號
 sudo adduser newaccount

 // to  lock the specified account

 sudo passwd -l pi

 //This  is  the  reverse  of  the  -l  option

 sudo passwd -u pi

 //Adding new user with SUDO permission

 nano /etc/sudoers.d/010_pi-nopasswd , edit content { pi ALL=(ALL) PASSWD: ALL}
  • 調整以下事項:
sudo raspi-config
Change User Password
expand Filesystem
TimeZone
Change Locale (en_US.UTF8 UTF8 or zh_TW.UTF8 UTF8)

sudo apt-get update -y
sudo apt-get upgrade –y
sudo rpi-update (updating firmware , kernel module ...)
sudo apt-get autoremove
sudo apt-get autoclean
sudo reboot
  • 相關指令
//檢查已安裝的核心模組
lsmod
//設定系統自動校時
sudo timedatectl set-ntp yes
timedatectl
  • 關閉藍芽與無線網路功能(因為專案沒使用這個)
sudo nano /boot/config.txt
# turn wifi and bluetooth off
dtoverlay=pi3-disable-wifi
dtoverlay=pi3-disable-bt
  • 安裝要的服務
sudo apt-get install apache2 -y
sudo apt-get install php5 libapache2-mod-php5 –y
  • Apache 監聽 port 修改
sudo nano /etc/apache2/ports.conf
sudo /etc/init.d/apache2 reload
  • Apache htdocs 目錄權限調整
sudo chown -R youracccount:www-data /var/www
sudo chmod 775 /var/www
sudo usermod -a -G www-data youraccount(e.g. pi)
sudo reboot
  • 額外用到的 PHP 模組
sudo apt-get install php5-sqlite -y
sudo apt-get install php5-curl -y
  • sqlite 目錄權限調整
sudo chown -R youraccount:www-data sqlite/
sudo chmod 775 -R sqlite/
  • 例行工作排程
crontab -e

Example
//10 分鐘自動執行 PHP Script
*/10 * * * * /usr/bin/curl -q http://localhost/your php code.php
  • Raspberry 關機
sudo poweroff or sudo shutdown -h now
  •  例行更新的腳本
#!/bin/sh
sudo apt-get update -y
sudo apt-get upgrade -y
sudo rpi-update
sudo apt-get autoremove
sudo apt-get autoclean
sudo reboot

Raspberry OS 版本升級方式 (Jessie 升級至 Stretch 步驟)

apt-get update -y
apt-get upgrade -y
apt-get dist-upgrade -y

sudo sed -i 's/jessie/stretch/g' /etc/apt/sources.list
apt-get update -y
apt-get upgrade -y
apt-get dist-upgrade -y

//check version
lsb_release -a

2016年7月7日 星期四

相簿程式 Single File PHP Gallery

Single File PHP Gallery 的特色。沒有用到資料庫,也只要一支 PHP 檔案上傳到主機後,就可以馬上擁有一個簡易版本的相簿了。很酷的說。

我的主機相關環境 :
  • OS : Windows Server 2008
  • PHP : 5.6.23
  • Single File PHP Gallery : 4.6.1
    • 需要的環境 :PHP (GD module enabled)、目錄有寫入的權限、記憶體夠大(參考文件)
    • 也可以透過它所提供的 SFPG TEST script  來測試主機的環境合不合需求
實際測試後,發現傳上去後若目錄的名稱有中文字出現時,則前端的介面在這個有中文字的相簿會是亂碼的狀況。解決方式如下:
  1. 不想要修改程式的原始碼的方式:可以在每個相簿的目錄內放入 _name.txt 文字檔(utf-8編碼),將含有中文字的相簿名稱寫入。這樣在前端介面就不會有亂碼狀況出現 
  2. 修改程式原始碼的方式 : 打開 index.php 直接修改 function sfpg_display_name ,在行 396~397 的中間 ( return $display_name; 字串的前面) ,加入 $display_name = iconv("BIG5", "UTF-8", $display_name);。
補充 :
  • 若要針對不同的相簿而有更多的敘述時,也可以放入 _desc.txt 文字檔在目錄內。
  • 程式內的一些可能較常用到的常量的設定
    • define('PASSWORD', ''); ==>指定密碼後,要觀看相簿時需輸入指定的密碼
    • define('ADMIN', FALSE); ==>改成 TRUE後,可直接透過瀏覽器的介面直接管理相簿資料
    • define('DIR_NAME_FILE', '_name.txt'); ==>可自行定義相簿名稱的文字檔名稱,標題文字寫在所定義的檔案內
    • define('DIR_DESC_FILE', '_desc.txt');==>可自行定義相簿的描述的文字檔名稱,描述文字寫在所定義的檔案內
    • define('TEXT_GALLERY_NAME', 'Single File PHP Gallery'); ==> 介面的標題
    • define('SHOW_FILES', TRUE); ==>因為程式會自動的將目錄內所有的檔案做呈現的動作,但若有一些非影像的檔案不想呈現時(例如Thumbs.db) ,將 TRUE 改成 FALSE 即可
    • 介面若想要中文化時,將這些與前端頁面相關的文字改成中文就可以了。例如define('TEXT_PREVIOUS', '<< Previous'); 改成 define('TEXT_PREVIOUS', '<< 上一頁');

 
相關資料:

2016年6月21日 星期二

XOOPS 2.5.7.2 to 2.5.9 更新處理


XOOPS 2.5.7.2 to 2.5.9  Upgrade.

簡單記錄相關處理
  • 從官方網站下載更新的原始檔 (http://www.xoops.org/ )。下載後解壓縮。
  • 將解壓縮後的 htdocs 目錄內的檔案全部更新並覆蓋到 xoops 執行目錄內,刪除目錄內已複製的 xoops_data 與  xoops_lib目錄
  • 將解壓縮後的 htdocs/xoops_data 與  htdocs/xoops_lib 移轉到原系統所指定位址
  • 將解壓縮後的 upgrade 目錄內全部複製到 xoops執行目錄內
  • 使用瀏覽器,執行  http://HOSTIP/xoops/upgrade/
  • 按網頁上所呈現的內容指示說明,直接進行更新動作
  • 更新完成後,按建議內容升級所使用模組(/xoops/modules/system/admin.php?fct=modulesadmin&op=update&module=system)。
  • 刪除 install and upgrade 目錄
  • 升級後異狀處理:
    •  在升級各模組時,除 CBB論壇外。其它均正常的完成升級的動作。
    • CBB論壇處理方式(升級的方式): 
      • 下載新版本 newbb-4.33-RC-12 , Github download
      • 將舊版本另外複製備份後,再將所下載的新版本的相關檔案複製到  /module/newbb/*
      • 使用 XOOPS 管理介面,透過介面直接升級 newbb 版本。
      • 升級後,即可正常使用。
      • 目前 newbb4.33 僅提供英文版本。若需要中文版,也可直接修改 /newbb/language/English/main.php 內的相關文字

相關資料


2016年5月9日 星期一

解決在 windows 10 64bit 無法正常啟動 PHP CURL 模組的問題

解決方式:在 apache 設定檔內直接指定以下相關檔案。

例如:
LoadFile "D:\PHP\php5ts.dll"
LoadFile "D:\PHP\libeay32.dll"
LoadFile "D:\PHP\ssleay32.dll"
LoadFile "D:\PHP\libssh2.dll"

真是覺得很奇怪的一件事。因為在其它台主機內也是使用 64bit 的作業系統。但也沒有這種奇怪的狀況。反正是開發的機器就不追根究柢了。

相關資料:


PHP 連結 MS SQL Server 的做法



相關資料:

2016年3月30日 星期三

Cacti 數據資料檢驗

前些日子升級 cacti 版本後,有一台主機的流量在某些時間會有飆高的狀況。不是很確定是那的問題。所以先來釐清 cacti 所收集的資料是否正確。

原始數據,可以透過 Server 2010內的「效能監視器」功能來產出,再來比對 cacti 內的資料,這樣就可以釐清 cacti所收集到的數據是否正確。

效能監視器設定步驟如下:
  1. 打開效能監視器
  2. 手動建立
  3. 勾選效能計數器
  4. 選擇要收集的項目(e.g. Netword Interface)
  5. 設定完成後,系統就會開始收集相關數據
  6. 收集一段時間後,停止該項目。
  7. 此時可到報告功能內直接分析所收集的項目
相關參考:





2016年2月5日 星期五

DokoWiki 資料整理

DokoWiki 蠻特別的。它的資料儲存的方式可以選用檔案或是資料庫 (MySQL) 的方式。官方推薦的方式是採用檔案的方式,主要的論點是 Wiki 的使用與應用方式多數是以讀取為主。採用檔案的儲存方式,這點其實對於資料的備份也很方便。要備份整個系統其實只要將這些 dokowiki的檔案複製起來就可以了。

  • 環境與初次安裝:
系統需要有 PHP的執行環境,PHP 5.3 以上版本。安裝方式很簡單,只要在下載頁面內選擇好需要的功能 (它甚至連 web-server 都包含進來了),再按下 download 按鈕後就可以得到相關的程式碼;在這選擇的當然以 stable version 為主、language 僅挑選 zh-tw - 繁體中文、Plugins的部份,則挑了 Upgrade Plugin 好方便做往後的系統升級。

下載好的相關程式碼,解壓縮後傳到網站主機上。在利用瀏覽器到它的安裝介面(e.g. http://ip/dokuwiki/install.php),按照它介面上的指示操作後就可以順利的安裝。安裝好後,別忘了刪除 install.php 檔案。

至於安裝好後,要如何開始使用它呢?相關的使用說明文件在DokuWiki 的官方頁面也說明了很清楚。直接參考即可。在這列出新手上路,可能最需要知道的項目。
  1. 如何新增頁面 How to create pages in DokuWiki
  2. 刪除頁面  Delete a page 
  3. 新增左側的導覽列;新增 siderbar 頁面,將呈現的項目輸入即可。
  4. Namespaces;這功能主要可以讓很多的文件歸類到相同的類別內。做的好處是在找的時後,可以按分類尋找。
  5. 語法格式化 Formatting Syntax
  • DokoWiki Plugin 的安裝方式說明
Plugin 的安裝方式有提供很方便的 manager。但也是可以採用手動的方式安裝。方式也很簡單,只要將要使用的 plugin 下載後。再將檔案上傳到 /lib/plugins/* 的目錄內,就完成了。以 Add New Page Plugin 為例,只要將檔案下載後,解壓縮再上傳到指定目錄內。在 sidebar 頁面內新增 {{NEWPAGE}} 的語法,就能在頁面左側的導覽列內看到新增頁面的功能。

  • DokoWiki Template 的安裝方式說明
很多現成的樣版可供挑選,安裝與往後的更新方式也是透過 Extension Manager 來操作。手動的方式也很簡單。只要將下載好的樣版放在 /lib/tpl/* 內即可。RWD 在近年來很夯,Bootstrap3 Template 就是採用 bootstrap為基底的樣版,當然也支援 RWD 的頁面。所以採用這個樣版為例子,安裝的步驟只要將下載好的檔案解壓縮後,將整個目錄的檔案上傳到指定位圵後。再到系統介面內的管理選單內的系統設定內指定預設呈現的樣版後就完成了。
  • DokoWiki Upgrade
手動更新的方式可直接參考線上說明文件。也可以利用它的 Upgrade Plugin 來做升級的動作。不過利用 Upgrade Plugin來做升級的方式,必須主機的 PHP 有支援 SSL 串流加密 ( 將 php.ini 內的 extension=php_openssl.dll 啟用即可 )。

 也可以採用這的做法 https://www.dokuwiki.org/zh-tw:install:upgrade
直接將更新的版本內的所有檔案直接覆蓋上去。目前從測試環境內看來是沒有什麼問題。

  • DokoWiki Security
線上參考文件。我的做法是採用 LocationMatch 的方式。

相關資料
  1. DokuWiki Website
  2. Wiki語法入手


2016年1月7日 星期四

PHP Check Host

線上有不少可以主動監控網站的服務是否正常運作的平台。不過這不太適合我們這的環境。所以才另外實作一個與 AB-Tools.com 所提供的 Check Host 相似的功能。測試一陣子看看效果好不好用。

做法簡述如下:
  1. 撰寫 PHP Script ,工作流程如下
  2. 利用作業系統的工作排程器,每 20 分鐘自動執行這支 CheckHost.php
  3. Done.

2015年12月10日 星期四

PHP7 安裝與升級 @ Windows

PHP7 己於 104.12.03 釋出。稍微先試著升級原本的測試開發主機。主機環境與升級步驟簡述如下。至於正式上線服務的主機內的相關系統是否可以順利的在 PHP7內使用,這部份有時間在陸續測試。
  • 目前的測試開發主機環境:
  1. Windows 7 64bit
  2. Apache 2.4.17 (C:\Apache2\*)
  3. PHP 5.6.16 (C:\PHP\*)
  • 安裝與升級步驟:
  1. 安裝需要的 Visual Studio 2015 (VC14) 
  2. 備份原本 C:\PHP\* 的目錄內的檔案。備份好後將它原本執行目錄內的所有檔案刪除。
  3. 將新版本的 PHP7 內的相關檔案複製到 C:\PHP\*
  4. 調整 php.ini 內的參數
  5. 修改 Apache/conf/httpd.conf ,將原本 LoadModule php5_module "C:/PHP/php5apache2_4.dll" 改成 LoadModule php7_module "C:/PHP/php7apache2_4.dll"
  6. 重新啟動 Apache 後即可 
相關資料:

2015年12月2日 星期三

PHP iniscan tools

PHP iniscan tools :檢查 php.ini 設定的安不安全的檢查工具。

安裝方式:
使用 Composer安裝,指令如右  composer require psecio/iniscan

使用方式:
example : iniscan scan --path=C:\PHP\php.ini --fail-only ,直接參考線上說明即可。

2015年9月7日 星期一

Install ionCube Loader on Windows Server 2008

最近可能要購入的一家系統。他們的 PHP 程式碼採用 ionCube 加密。這是我第一次遇到有做加密過的 PHP 系統。稍微看了一下官方的文件。提供解密的 ionCube Loader 的安裝方式如下:
  1. 官方下載符合主機作業系統使用的版本
  2. 解壓縮後,將符合主機使用的 PHP 版本 dll 檔案,複製到 PHP/ext/* 目錄內
  3. php.ini 內加入 zend_extension = ioncube_loader_win_5.6.dll
  4. restart Apache. Done.
官方也很貼心的提供  loader-wizard 的方式。只要將下載 Loader Wizard 檔案。解壓縮後傳上網頁主機。再利用瀏覽器去執行 http://serverip/loader-wizard/ioncube/loader-wizard.php。在依照頁面上的提示進行即可完成安裝。至於是否安裝成功且能正確的解密。頁面內也有提供測試腳本。如果正確安裝與執行就會出現如下圖示。

2015年5月22日 星期五

PHP Fatal error: Allowed memory size of 536870912 bytes exhausted @ PHP5.6

升級PHP5.6後,有一支程式在執行上會出現 PHP Fatal error:  Allowed memory size of 536870912 bytes exhausted (tried to allocate 65488 bytes) in xxx.php 的訊息。原本以為是 php.ini 內的 memory_limit 的緣故,但不管再如何的調整都是會出現這樣的訊息。

只好重新檢視 PHP 程式的原始碼。檢查了好久,看來看去都覺得沒有問題。後來查了好久才發現與預設編碼有關係。在 php5.6 的 php.ini 預設編碼是指定為 UTF-8。而程式內所使用的Multibyte String Functions(例如: mb_strlen  、mb_strpos 等 function) 。若沒特別指定時,會以  php.ini 內預設值為準。所以也就造成程式在判斷上與邏輯錯誤造成無數迴圈,因而造成此現象。

解決方式其實只要加入一行,直接指定原來升級前所使用的編碼方式就可以了。

宣告如右:mb_internal_encoding("ISO-8859-1"); 

為了這一行花了 N 久的時間。天啊。

往後若不確定升級前所使用的編碼方式,也可以直接 echo mb_internal_encoding(),就可了解所使用的編碼。

相關資料:

2015年5月20日 星期三

PHP short open tags (PHP5.6)

由於安全性支援週期的緣故,預計將手上的 PHP慢慢的升到 5.6版本。

沒想到第一台就出現的狀況。本來懷疑是系統的 mysql function 需要改寫的,但經測試它還是可以支援。...... 後來發現是 short_open_tag 所造成的。

這個讓我花了半天的時間除錯。真是天阿。明明有將 php.ini 內的 short_open_tag 啟用 (short_open_tag = ON)。但是PHP程式在使用短標籤時就是會有問題。查了手冊,它預設就是啟用的。就算沒特別的啟用也是 OK的。查了老半天。原來在我宣告的下方,它的預設宣告值就有一行是直接指定為 off 的狀態。

相關資料:

2015年3月10日 星期二

Notepad++ 實用技巧

這是一個蠻實用的技巧, 在實務上資料通常會彙整成一份 excel 清單。而有的時候卻需要將這份資料的同一欄內的資料轉成陣列內的資料。這個時候就可以利用下方的方式。完整操作可參考

原文可參考相關資料。懶的看過程就直接看總結的部份或是直接看附圖就可以了。

Summary
What: Show End Of Line characters (LF, CR, etc.)
How: “View -> Show Symbol -> Show End of Line”

What: Add quotes to words and a comma at the end
How: “Search -> Replace”
Find what: (.*)
Replace with: "\1",
Search Mode -> Regular expression

What: Remove End Of Line characters (CR, LF)
How: “Search -> Replace”
Carriage Return (CR)
Find what: \r
Replace with: (blank)
Search Mode -> Extended

Line Feed (LF)
Find what: \n
Replace with: (blank)
Search Mode -> Extended

 相關資料:
步驟0















步驟1



















步驟2



















步驟3

















成果















[MySQL SQL auto increment id 重置]

  • SQL example : INSERT INTO `table` (`id`, `str`) VALUES (12460, 'abc'), (12461, 'abc'), (12462, 'abc');
  • 直接修改 SQL 值的方式再重新回寫到 DB內。範例:(^\()(\d{5}), 取代為 \(NULL,。這個範例是 id 值的數字範圍是在 10000 ~ 20000之間。若數字在 1 ~ 20000 之間時則要改為 (^\()(\d{5}), |(^\()(\d{4}), |(^\()(\d{3}), |(^\()(\d{2}), |(^\()(\d{1}),


[其它整理 ]

2015年1月13日 星期二

Cacti Plugins

ApacheStats Plugin

  • 要監控的主機。修改 apache httpd.conf ,將 LoadModule status_module modules/mod_status.so 啟用,並加入以下腳本。
  • ExtendedStatus On
    <Location /server-status>
    SetHandler server-status
    Order Deny,Allow
    Deny from all
    Allow from 192.168.66.2
    Allow from 192.168.66.18
    </Location>
  • ApacheStats Template Install
  • 其它參考:利用Cacti监控网卡流量、Apache以及Mysql性能监控 
  • 心得:這個 plugin 搞了好久。一直沒有圖表的數據出來。後來發現是自己的 php.ini 設定的緣故。之前基於一些安全性的理由。我這個主動關閉一些不需要的設定。cacti ApacheStats Plugin 需要將 allow_url_fopen開放。



 

 

 

 

Monitor Plugins

Cacti 0.8.8b 安裝及設定Monitor & thold Plugin

Cacti manage Plugins

cacti 0.8.8b 安裝Manage 套件 (使用此 plugins 需配合 Settings Plugin);此套件在 PHP 5.5.X 版本會有問題

在安裝時出現以下訊息:
 Fatal error: Call to undefined function define_syslog_variables() in Y:\Apache\htdocs\cacti\plugins\manage\setup.php on line 752


查了一下原因,define_syslog_variables() 在 5.5.x 版不支援;註解掉此行後就可以順利在 cacti plugin management 看到此功能。但看來也沒有順利將需要更新的 SQL匯入到 DB。如果手動匯入需要的SQL檔案後不知是否能正常運作。

Percona Monitoring Plugins 
此 plugin 也可以監控 MySQL,相關做法可參考此篇  BLOG
 

2015年1月7日 星期三

cacti on windows server (相關資料整理)

安裝環境調整與設定:

實做的環境為 Server 2008 R2 64bit & Windows 7 64bit

php.ini調整

啟動以下 dll
extension=php_mysql.dll
extension=php_snmp.dll
extension=php_sockets.dll
cgi.force_redirect = 0

RRDTools安裝

net-snmp安裝

  • net-snmp win binaries download
  • 將它安裝於 C:\net-snmp 目錄內
  • 看看有沒有運作正常:於命令列內輸入 snmpwalk.exe -v 1 -c public localhost ;有看到訊息出現時則表示正常。

Spine 安裝

  • Spine download
  •  下載要的版本後,解壓縮到 C:\cacti\* 目錄內
  • 將 cactid.conf.dist 重新命名為 cactid.conf。修改 cactid.conf,將 MySQL相關資訊更新。

Active Perl安裝

  • 有些查到的資料說,有些 Script 是用 perl 寫的。但做測試時先跳過此部份。

Cacti php code調整

  • 修改設定檔 /cacti/include/config.php ,將 mysql 資訊填入。
  • 將 /cacti/cacti.sql 匯入到 MySQL內
  • 到瀏覽器內輸入 http://your PC IP/cacti/,再按介面提示進行安裝即可。第一次的登入帳密為 admin/admin 
  • 字型設定:於 settings 介面內,設定 RRDTools Default Font 的位址。例如於該欄位內使用 tahoma.ttf 字型。 C:/Windows/Fonts/tahoma.ttf
  • 於作業系統內設定排程,每隔五分鐘自動執行 htdocs/cacti/poller.php。
  • 於 cacti web 介面內新增 Device
    • Host Template 選windows 2000/XP Host (因為是監控 windows  主機)

Cacti Server Backup Issue

  • Cacti PHP Code backup - 若資料過於龐大且可以不保留歷史記錄時,可以將 /rra/* & /log/* 內的資料刪除。
  • MySQL DB backup

Cacti Upgrade

  • 參考此頁內的作法,再透過 web 介面內的提示處理即可;更新時,別忘將 php.ini 內的 disable_function 與 open_basedir 暫時開放。  
    • 0.8.8c 更新至 0.8.8f 更新的經驗:
      • 將 0.8.8c 更新至 0.8.8f 版本後。使用 cacti UI 介面,都沒有接收到後續資料。查了很久後,有可能是 Apache 執行權限不足的緣故。因為當時將整個 cacti 目錄直接刪除,再重新新增 cacti 目錄後忘了調整下面子目錄所需的權限。cacti 程式目錄需要的權限可參考 cacti online document 。
      • 需要 modify 權限的目錄:cacti\rra\* , cacti\log\* 
      • 針對第七點與第八點的地方( scripts 與 resource 目錄);指令的意義如右: cp –u ( -u, --update copy only when the SOURCE file is newer than the destination file or when the destination files is missing)
    • 0.8.8f 更新至 0.8.8g 更新的經驗:105.03.18
      • 由於這是透過SSH 上傳,不是直接在主機內動作。所以這的更新動作如下
      1.  備份資料庫與目前在運行的cacti 程式碼
      2. 下載新版本並解壓縮,請注意要下載到對的版本。因為這次的更新,很妙的是官方網站內的下載頁面所直接提供的下載連結是舊的版本。導致這次更新時出現 Error Invalid Cacti version 0.8.8f,cannot upgrade to 0.8.8.8的狀況。
      3.  修改解壓縮檔案內的 include/config.php ,將需要的MySQL資料填入
      4.  解壓縮檔案內的刪除 rra/* 目錄
      5.  除了Script、resource的部份。全部直接上傳且覆蓋現在所使用的檔案。
      6.  上傳 Script、resource 目錄的資料,有較新的檔案或無此檔案時才做覆蓋的動作。
      7. 由於採用上傳更新的做法,所以主機上的檔案權限的部份會照舊。
      8.  暫時調整PHP.ini 設定,php.ini 內的 disable_function 與 open_basedir 暫時開放。 restart Apache
      9. 此時再連到 cacti web介面。直接按網頁內的說明進行即可。
      10. 將暫時調整PHP.ini 設定調整回來。restart Apache.
      11. 在 cacti 介面內重建 poller cache
        system utilities -->Rebuild poller cache (其實這點我是覺得很奇怪,因為手冊也沒有提到這個。但由於更新到 0.8.8f 與 0.8.8g 時的經驗,若沒有執行此程序時,就不會再出現更新後圖表)移除 install 目錄。手冊雖然沒提及,但我還是刪掉它。
        搞到後來不確定到底是我這的PHP設定的太嚴謹還是需要做這個  Rebuild poller cache 的動作,總之目前將原本所限制的
        disable_function 與 open_basedir 關掉後就可以正常運作。很妙的是也沒有 log 記錄可供參考。由於這台主機是專用,所以有空再來釐清是那的問題。
      12. 完成 !! 

被監控的設備相關設定

  1. SNMP 啟動 : Win7 可參考此頁說明、Server 2008 可參考此頁說明。
  2. Cacti 介面設定:細部操作可參考此頁說明。

Misc

  • 忘了 cacti 登入密碼:可以直接到 MySQL內更新 user_auth ; update user_auth SET password = MD5('new password');
  • 架好後也順利監控各個主機了。但很奇怪,有些圖表。如 Disk Used Space 的圖表在有些時間點會突然消失、有些主機卻是連資料都沒有(圖三)。
    • 查了一下原因,可能是這所提到的問題。調整了 php.ini 的max_execution_time。後續再來觀查看看。

    成果 


     

     

     

     

     

     

     

     

     

     

    奇怪的狀況

     

     

     

     

     

     

     

     

     

    疑難雜症處理


    1. system utilities -->Rebuild poller cache
    2. snmpwalk -v 2c -c public test server ip
    3. check cacti/rra/* files
    4. check apache log files

     

    相關資料: