一個 Smarty 程式主要來兩個部分來組成:php程式和html(樣版)。html(樣版)放在templates目錄下,Smarty建議用tpl作為樣版的副檔名(不是tpl也可以)。php程式和樣版分開放在不同的目錄,可以方便控管權限,只開放樣版目錄給UI設計師,這樣就不用擔心他們會異動到PHP相關程式。
樣版 first.tpl 內容:
<html>
<head>
<title>Smarty</title>
</head>
<body>
{* Hello again *}
Hello, {$name}!
</body>
</html>
說明:
樣版註解:在Smarty中以"{*"和"*}"所包起來的片段,會被Smarty視為註解。
標籤定義符號:在Smarty中以{}包起來。
指定變數:$name便是Smarty指定變數的方式,這和PHP是一樣的。
故 {$name} 的作用就像PHP中 <?php echo $name; ?> 相類似。
程式 first.php 內容:
<?php
// 載入 Smarty 物件類別檔
require('Smarty/Smarty.class.php');
// 建立 Smarty 物件
$smarty = new Smarty();
/* 定義 Smarty 的工作路徑
** 一般在開發 Smarty 程式時,有兩個物件屬性一定要指定。
** template_dir 指定存放樣版的路徑。
** complie_dir 指定存放編譯好的樣版的路徑。
** 此兩個路徑必須是實體路徑,這樣才能夠正確的存取它們。
*/
$smarty->setTemplateDir('D:/WebServer/wwwroot/demo/templates');
$smarty->setCompileDir('D:/WebServer/wwwroot/demo/templates_c');
/* 指定變數
** 整支程式的關鍵點,透過assign函式來指定結果到變數。
** assign函式的第一個變數是樣版的變數名稱,第二個變數是PHP的變數名稱。
** 兩個變數名稱可以不一樣,但為了方便管理,通常會指定成同樣的變數名稱。
*/
$smarty->assign('name', 'World');
// 顯示結果,指定讀取樣版
$smarty->display('first.tpl');
?>
打開瀏覽器,鍵入http://localhost:8081/demo/first.php,假設一切沒問題,會看到下面的畫面:
編譯後的樣版,可以在templates_c目錄底下找到,檔案名稱會是一長串的怪名字,檢視內容:
<?php /* Smarty version Smarty-3.0.8, created on 2011-07-22 16:05:14
compiled from "D:/WebServer/wwwroot/demo/templates\first.tpl" */ ?>
<?php /*%%SmartyHeaderCode:33754e292f3adf9af9-73651535%%*/if(!defined('SMARTY_DIR')) exit('no direct access allowed');
$_smarty_tpl->decodeProperties(array (
'file_dependency' =>
array (
'45c799dd90618608878cbe989324a5084622b683' =>
array (
0 => 'D:/WebServer/wwwroot/demo/templates\\first.tpl',
1 => 1311320453,
2 => 'file',
),
),
'nocache_hash' => '33754e292f3adf9af9-73651535',
'function' =>
array (
),
'has_nocache_code' => false,
)); /*/%%SmartyHeaderCode%%*/?>
<html>
<head>
<title>Smarty</title>
</head>
<body>
Hello, <?php echo $_smarty_tpl->getVariable('name')->value;?>
!
</body>
</html>
其中 {$name} 被替代成 <?php echo $_smarty_tpl->getVariable('name')->value;?>
檔案開頭加入了編譯資訊。除非樣版也做任何異動,不然往後 Smarty 就會使用此編譯後的樣版來輸出結果。
閱讀全文...
Happy coding.
The secret to creativity is knowing how to hide your sources.— Albert Einstein
Good artists copy, great artists steal. – Pablo Picasso
2011年8月15日 星期一
在Windows安裝Smarty
Smarty是php最常被採用的樣版,本篇文章將介紹如何在Windows系統安裝和測試Smarty。
請利用解壓縮軟體將下載回來的 Smarty-3.0.8.tar.gz 解開。
其中 demo 資料夾,可以用來驗證是否安裝成功。
然而 libs 資料夾,才是所需的主程式,裡面應該會有以下檔案:
plugins:Plugins 存放目錄
sysplugins:核心檔案存放目錄
debug.tpl:偵錯控制台樣版檔
Smarty.class.php:Smarty主要類別檔
將 libs 更名為 Smarty ,並將整個資料移至原先存放 php 的目錄內(D:\WebServer\php)。
接者修改 php.ini ,找到 include_path設定,將值 D:\WebServer\php 加入。
include_path = ".;D:\WebServer\php\PEAR;D:\WebServer\php"
這樣一來只要在程式的開頭加入下列的敘述,就能正確的引入 Smarty 物件類別檔。
<?php
require ('Smarty/Smarty.class.php');
// ....
?>
Note: 只要 php.ini 有任何異動,就必須重新啟動 Apache 來使新設定生效。
接著修改 index.php,找到
require ('../libs/Smarty.class.php');
將其改成
require ('Smarty/Smarty.class.php');
打開瀏覽器,鍵入http://http://localhost:8081/demo/index.php,得到以下畫面表示安裝成功。
參考:官方網站上的 Quick Install,但其主要針對 unix like 的環境,做目錄權限的設定,Windows沒像那麼複雜,但要注意目錄是否被設成唯讀,會造成無法寫入或編譯。
閱讀全文...
Install Smarty
在 Smarty 官方網站 可以下載安裝檔。此時最新版本為3.0.8。請利用解壓縮軟體將下載回來的 Smarty-3.0.8.tar.gz 解開。
其中 demo 資料夾,可以用來驗證是否安裝成功。
然而 libs 資料夾,才是所需的主程式,裡面應該會有以下檔案:
plugins:Plugins 存放目錄
sysplugins:核心檔案存放目錄
debug.tpl:偵錯控制台樣版檔
Smarty.class.php:Smarty主要類別檔
將 libs 更名為 Smarty ,並將整個資料移至原先存放 php 的目錄內(D:\WebServer\php)。
接者修改 php.ini ,找到 include_path設定,將值 D:\WebServer\php 加入。
include_path = ".;D:\WebServer\php\PEAR;D:\WebServer\php"
這樣一來只要在程式的開頭加入下列的敘述,就能正確的引入 Smarty 物件類別檔。
<?php
require ('Smarty/Smarty.class.php');
// ....
?>
Note: 只要 php.ini 有任何異動,就必須重新啟動 Apache 來使新設定生效。
Test Smarty
將 demo 資料夾移至預設網站主要根目錄下(D:\WebServer\wwwroot)。接著修改 index.php,找到
require ('../libs/Smarty.class.php');
將其改成
require ('Smarty/Smarty.class.php');
打開瀏覽器,鍵入http://http://localhost:8081/demo/index.php,得到以下畫面表示安裝成功。
參考:官方網站上的 Quick Install,但其主要針對 unix like 的環境,做目錄權限的設定,Windows沒像那麼複雜,但要注意目錄是否被設成唯讀,會造成無法寫入或編譯。
閱讀全文...
2011年8月5日 星期五
MySQL管理工具(phpMyAdmin)
說到MySQL管理工具,phpMyAdmin是免費及最常用的工具了,由PHP寫成,所有資料庫管理、備份、回存、SQL操作都可以由此工具完成。
安裝 phpMyAdmin
1. 請至官方網站下載最新版本。
2. 將下載的檔案解壓縮至WEBROOT目錄(D:\WebServer\wwwroot)。
3. 複製config.sample.inc.php成config.inc.php。
4. 修改config.inc.php
$cfg['Servers'][$i]['auth_type'] = 'http'; /* cookie改成http */
$cfg['Servers'][$i]['AllowNoPassword'] = true; /*要改成true,因為MySQL root預設為空白 */
5. 輸入 http://localhost:8081/phpmyadmin/index.php ,就可以進入phpmyadmin來管理MySQL了。
雖然順利登入了,網頁畫面往下拉,phpmyadmin會把現有的問題顯示出來。
A. 有新的phpmyadmin可用,請考慮升級。
這不是太大的問題,要更新時到官方網站下載新版本就行了,往後常會遇到,千萬記得備份你的config.inc.php檔案。
B. phpmyadmin高級功能未全部設置,部分功能不可用。
解決方式都可以在PmaWiki找到
a. 新增control user
GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';
GRANT SELECT (
Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
Execute_priv, Repl_slave_priv, Repl_client_priv
) ON mysql.user TO 'pma'@'localhost';
GRANT SELECT ON mysql.db TO 'pma'@'localhost';
GRANT SELECT ON mysql.host TO 'pma'@'localhost';
GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
b. 執行create_tables.sql,檔案位於phpMyAdmin\scripts目錄下。
c. 授與權限
GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost';
d. 修改config.inc.php,把以下設定前面//都拿掉就可以了
/* User used to manipulate with storage */
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';
/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
$cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';
e. 記得重啟apache來讓設定生效,重啟是最保險的方式。
Note:執行完create_tables.sql 還一直顯示有問題,請清session file
C. 您配製文件中的配置(空密碼的root)... ,主要說沒設置密碼容易被入侵,請設置密碼。
照以前的版本,應該是蠻容易完成一件事,可是試了最近的幾個版本,都一直無效。
從一般設定/修改密碼去設定完成後,我用mysqladmin去驗證,一樣還是不需要密碼,就可以登入了,不管是用MySQL 4.0或MySQL 4.1x的加密方式,就是無效。就只好用mysql本身提供的工具來完成這件事了。
D:\WebServer\mysql\bin>mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.5.14-log MySQL Community Server (GPL)
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>use mysql; (切換資料庫)
Database changed
mysql> update user set password=password('yourpasswordhere') where user='root'; (更新密碼)
Query OK, 0 rows affected (0.01 sec)
Rows matched: 3 Changed: 0 Warnings: 0
mysql> DELETE FROM user WHERE User=''; (刪除空帳號,維護系統安全)
Query OK, 1 row affected (0.00 sec)
mysql> FLUSH PRIVILEGES; (即時更新上面設定)
Query OK, 0 rows affected (0.00 sec)
mysql> quit;
Bye
D. 你的PHP MySQL 版本和 MySQL伺服器版本不合。
基本上不用太擔心這個,PHP預設是5.x版,已經夠使用了。
這時你的phpmyadmin基本上應該都是頭好壯壯,沒其他大問題。
其他常見問題
1. 正體中文
新出的版本都沒有正體中文,所以當phpmyadmin再抓OS預設語言時,就會以簡體中文顯示,這時就算你將config.inc.php檔案中的預設語言改成 $cfg['DefaultLang'] = 'zh_TW' 一樣不會有任何作用,請至網站下載(ok 3.4.2) Traditional Chinese translation for 3.4.x,並將下載回來的檔案放置WebROOT底下phpMyAdmin\locale\zh_TW\LC_MESSAGES目錄中。
2. 使用cookie方式登入時,常會出現下圖錯誤。
請確認php.ini內有將extension=php_mcrypt.dll打開,並確定啟動apache時,php能順利帶起mcrypt這模組。
3. session問題
3.1 請檢查php.ini中session.save_path設定的路徑,並確保有權限存取此目錄。
3.2 將下列語法存成session_test.php,可以用來檢查session相關所有訊息。
<?php
ini_set('display_errors', 'On');
error_reporting(6143);
session_start();
$sessionSavePath = ini_get('session.save_path');
echo '<br><div style="background:#def;padding:6px">'
, 'If a session could be started successfully <b>you should'
, ' not see any Warning(s)</b>, otherwise check the path/folder'
, ' mentioned in the warning(s) for proper access rights.<hr>';
if (empty($sessionSavePath)) {
echo 'A "<b>session.save_path</b>" is currently',
' <b>not</b> set.<br>Normally "<b>';
if (isset($_ENV['TMP'])) {
echo $_ENV['TMP'], '</b>" ($_ENV["TMP"]) ';
} else {
echo '/tmp</b>" or "<b>C:\tmp</b>" (or whatever',
' the OS default "TMP" folder is set to)';
}
echo ' is used in this case.';
} else {
echo 'The current "session.save_path" is "<b>',
$sessionSavePath, '</b>".';
}
echo '<br>Session file name: "<b>sess_', session_id()
, '</b>".</div><br>';
?>
當所有session設定檢查無誤,應會出現類似下面畫面結果。
閱讀全文...
安裝 phpMyAdmin
1. 請至官方網站下載最新版本。
2. 將下載的檔案解壓縮至WEBROOT目錄(D:\WebServer\wwwroot)。
3. 複製config.sample.inc.php成config.inc.php。
4. 修改config.inc.php
$cfg['Servers'][$i]['auth_type'] = 'http'; /* cookie改成http */
$cfg['Servers'][$i]['AllowNoPassword'] = true; /*要改成true,因為MySQL root預設為空白 */
5. 輸入 http://localhost:8081/phpmyadmin/index.php ,就可以進入phpmyadmin來管理MySQL了。
雖然順利登入了,網頁畫面往下拉,phpmyadmin會把現有的問題顯示出來。
A. 有新的phpmyadmin可用,請考慮升級。
這不是太大的問題,要更新時到官方網站下載新版本就行了,往後常會遇到,千萬記得備份你的config.inc.php檔案。
B. phpmyadmin高級功能未全部設置,部分功能不可用。
解決方式都可以在PmaWiki找到
a. 新增control user
GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';
GRANT SELECT (
Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
Execute_priv, Repl_slave_priv, Repl_client_priv
) ON mysql.user TO 'pma'@'localhost';
GRANT SELECT ON mysql.db TO 'pma'@'localhost';
GRANT SELECT ON mysql.host TO 'pma'@'localhost';
GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
b. 執行create_tables.sql,檔案位於phpMyAdmin\scripts目錄下。
c. 授與權限
GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost';
d. 修改config.inc.php,把以下設定前面//都拿掉就可以了
/* User used to manipulate with storage */
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';
/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
$cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';
e. 記得重啟apache來讓設定生效,重啟是最保險的方式。
Note:執行完create_tables.sql 還一直顯示有問題,請清session file
C. 您配製文件中的配置(空密碼的root)... ,主要說沒設置密碼容易被入侵,請設置密碼。
照以前的版本,應該是蠻容易完成一件事,可是試了最近的幾個版本,都一直無效。
從一般設定/修改密碼去設定完成後,我用mysqladmin去驗證,一樣還是不需要密碼,就可以登入了,不管是用MySQL 4.0或MySQL 4.1x的加密方式,就是無效。就只好用mysql本身提供的工具來完成這件事了。
D:\WebServer\mysql\bin>mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.5.14-log MySQL Community Server (GPL)
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>use mysql; (切換資料庫)
Database changed
mysql> update user set password=password('yourpasswordhere') where user='root'; (更新密碼)
Query OK, 0 rows affected (0.01 sec)
Rows matched: 3 Changed: 0 Warnings: 0
mysql> DELETE FROM user WHERE User=''; (刪除空帳號,維護系統安全)
Query OK, 1 row affected (0.00 sec)
mysql> FLUSH PRIVILEGES; (即時更新上面設定)
Query OK, 0 rows affected (0.00 sec)
mysql> quit;
Bye
D. 你的PHP MySQL 版本和 MySQL伺服器版本不合。
基本上不用太擔心這個,PHP預設是5.x版,已經夠使用了。
這時你的phpmyadmin基本上應該都是頭好壯壯,沒其他大問題。
其他常見問題
1. 正體中文
新出的版本都沒有正體中文,所以當phpmyadmin再抓OS預設語言時,就會以簡體中文顯示,這時就算你將config.inc.php檔案中的預設語言改成 $cfg['DefaultLang'] = 'zh_TW' 一樣不會有任何作用,請至網站下載(ok 3.4.2) Traditional Chinese translation for 3.4.x,並將下載回來的檔案放置WebROOT底下phpMyAdmin\locale\zh_TW\LC_MESSAGES目錄中。
2. 使用cookie方式登入時,常會出現下圖錯誤。
請確認php.ini內有將extension=php_mcrypt.dll打開,並確定啟動apache時,php能順利帶起mcrypt這模組。
3. session問題
3.1 請檢查php.ini中session.save_path設定的路徑,並確保有權限存取此目錄。
3.2 將下列語法存成session_test.php,可以用來檢查session相關所有訊息。
<?php
ini_set('display_errors', 'On');
error_reporting(6143);
session_start();
$sessionSavePath = ini_get('session.save_path');
echo '<br><div style="background:#def;padding:6px">'
, 'If a session could be started successfully <b>you should'
, ' not see any Warning(s)</b>, otherwise check the path/folder'
, ' mentioned in the warning(s) for proper access rights.<hr>';
if (empty($sessionSavePath)) {
echo 'A "<b>session.save_path</b>" is currently',
' <b>not</b> set.<br>Normally "<b>';
if (isset($_ENV['TMP'])) {
echo $_ENV['TMP'], '</b>" ($_ENV["TMP"]) ';
} else {
echo '/tmp</b>" or "<b>C:\tmp</b>" (or whatever',
' the OS default "TMP" folder is set to)';
}
echo ' is used in this case.';
} else {
echo 'The current "session.save_path" is "<b>',
$sessionSavePath, '</b>".';
}
echo '<br>Session file name: "<b>sess_', session_id()
, '</b>".</div><br>';
?>
當所有session設定檢查無誤,應會出現類似下面畫面結果。
閱讀全文...
2011年7月27日 星期三
在Windows安裝xdebug(Debug tool for php)
xdebug是一個Open Source的php debug工具,可以用來追蹤分析PHP程式運行的情況。
安裝 xdebug
A. 確認所需下載的版本
xdebug官方網站提供了一個方便的功能,只要將phpinfo() 所得的結果貼到find-binary網頁,讓其來分析結果就可以得到要下載的檔案版本。
網頁會明確抓到系統以建置的環境並告知所需執行的步驟:
1. Download php_xdebug-2.1.1-5.2-vc6.dll
2. Move the downloaded file to d:\WebServer\php\ext
3. Update D:\WebServer\php\php.ini and change the line
zend_extension_ts = d:\WebServer\php\ext\php_xdebug-2.1.1-5.2-vc6.dll
4. Restart the webserver
B. 安裝及修改php.ini
將從下載網頁下載到php_xdebug-2.1.1-5.2-vc6.dll複製到d:\WebServer\php\ext目錄下後,修改php.ini,在檔案最下方新增下列設定:
[Xdebug]
zend_extension_ts="D:\WebServer\php\ext\php_xdebug-2.1.1-5.2-vc6.dll"
xdebug.profiler_enable=on
xdebug.show_local_vars=on
xdebug.trace_output_dir="D:/WebServer/temp/xdebug"
xdebug.profiler_output_dir="D:/WebServer/temp/xdebug"
存檔後,需重啟Apache來確認更新內容,在新的phpinfo()中就可以看到xdebug相關資訊。
使用xdebug
使用個簡單程式來體驗xdebug
testXdebug.php
<?php
// Control xdebug on/off
//xdebug_disable();
testXdebug();
function testXdebug() {
includeFile();
}
function includeFile() {
require_once('notexist.php');
}
?>
透過xdebug_disable()來開關xdebug
*未使用xdebug時,原生落落長又看不清的錯誤訊息
*使用xdebug來到嶄新的彩色頁面
xdebug顯示就像JAVA Exception追蹤回溯一樣,可以一步步快速正確定位到錯誤位置來快速解決問題。
xdebug設定說明
所有的設定說明請參考http://www.xdebug.org/docs/all_settings,裡面有全部設定的詳細說明。
下列只說明幾個重要設定:
xdebug.profiler_enable
預設是on,用來開放xdebug權限,讓其將個資料寫入檔案,以利後續分析。
xdebug.show_local_vars
預設是關閉的(0),當此設定不等於0時,會顯示所有變數和大量訊息。
xdebug.trace_output_dir="D:/WebServer/temp/xdebug"
預設是/tmp,用來存放trace相關檔案,必須確認PHP對此目錄有存取的權限。
xdebug.profiler_output_dir
預設是/tmp,用來存放profiler相關檔案,必須確認PHP對此目錄有存取的權限。
閱讀全文...
安裝 xdebug
A. 確認所需下載的版本
xdebug官方網站提供了一個方便的功能,只要將phpinfo() 所得的結果貼到find-binary網頁,讓其來分析結果就可以得到要下載的檔案版本。
網頁會明確抓到系統以建置的環境並告知所需執行的步驟:
1. Download php_xdebug-2.1.1-5.2-vc6.dll
2. Move the downloaded file to d:\WebServer\php\ext
3. Update D:\WebServer\php\php.ini and change the line
zend_extension_ts = d:\WebServer\php\ext\php_xdebug-2.1.1-5.2-vc6.dll
4. Restart the webserver
B. 安裝及修改php.ini
將從下載網頁下載到php_xdebug-2.1.1-5.2-vc6.dll複製到d:\WebServer\php\ext目錄下後,修改php.ini,在檔案最下方新增下列設定:
[Xdebug]
zend_extension_ts="D:\WebServer\php\ext\php_xdebug-2.1.1-5.2-vc6.dll"
xdebug.profiler_enable=on
xdebug.show_local_vars=on
xdebug.trace_output_dir="D:/WebServer/temp/xdebug"
xdebug.profiler_output_dir="D:/WebServer/temp/xdebug"
存檔後,需重啟Apache來確認更新內容,在新的phpinfo()中就可以看到xdebug相關資訊。
使用xdebug
使用個簡單程式來體驗xdebug
testXdebug.php
<?php
// Control xdebug on/off
//xdebug_disable();
testXdebug();
function testXdebug() {
includeFile();
}
function includeFile() {
require_once('notexist.php');
}
?>
透過xdebug_disable()來開關xdebug
*未使用xdebug時,原生落落長又看不清的錯誤訊息
*使用xdebug來到嶄新的彩色頁面
xdebug顯示就像JAVA Exception追蹤回溯一樣,可以一步步快速正確定位到錯誤位置來快速解決問題。
xdebug設定說明
所有的設定說明請參考http://www.xdebug.org/docs/all_settings,裡面有全部設定的詳細說明。
下列只說明幾個重要設定:
xdebug.profiler_enable
預設是on,用來開放xdebug權限,讓其將個資料寫入檔案,以利後續分析。
xdebug.show_local_vars
預設是關閉的(0),當此設定不等於0時,會顯示所有變數和大量訊息。
xdebug.trace_output_dir="D:/WebServer/temp/xdebug"
預設是/tmp,用來存放trace相關檔案,必須確認PHP對此目錄有存取的權限。
xdebug.profiler_output_dir
預設是/tmp,用來存放profiler相關檔案,必須確認PHP對此目錄有存取的權限。
閱讀全文...
2011年7月5日 星期二
在Windows安裝php開發環境(二)
之前試著透過自動安裝及設定的方式來建置php開發環境,似乎不是很順利,決定以手動安裝的方式再來建置一次開發環境。
規劃目錄結構
打算仿造IIS將相關程式放在同一目錄底下,以下是我規劃的目錄結構:
註:我把整個目錄放在D槽,和我的Windows系統目錄C槽分開,這樣當OS系統有任何問題,需要重灌時,開發環境的設定和資料不會消失。
下載要安裝的各軟體
Apache
如網站需要SSL支援,請下載包含OpenSSL的版本。
http://httpd.apache.org/download.cgi (Win32 Binary including OpenSSL 0.9.8r: httpd-2.2.19-win32-x86-openssl-0.9.8r.msi)
PHP
請盡量選擇最新穩定版本,我打算讓php搭配apache以module來執行,故選擇 VC6 x86 Thread Safe的版本;如果要搭配IIS,請選擇VC9的版本,需要Microsoft 2008 C++ Runtime (x86)。
因要手動安裝,所以下載沒有安裝檔的zip package即可。
http://windows.php.net/download/ (VC6 x86 Thread Safe: php-5.2.17-Win32-VC6-x86.zip)
安裝Apache
執行httpd-2.2.19-win32-x86-openssl-0.9.8r.msi,大都直接按[Next]即可安裝完。要注意的地方如下:
1. 安裝到Server Information時,其中Install Apache HTTP Server 2.2 programs and shortcuts for選項,請選擇only for Current User, on Port 8080, when started Manually. 當然如果確定不使用IIS,也可以使用 Port 80的選項。
2. 安裝到Destination Folder時,請將安裝目錄改變成D:\WebServer\Apache2.2。
註:雖然指定Port 8080,安裝時可能會遇到apache啟動失敗的訊息,apache還是會用80去啟動,先可不管,等安裝完php,所有設定一次來搞定。
安裝PHP
1. 將php-5.2.17-Win32-VC6-x86.zip解壓縮到D:\WebServer\php目錄下。
2. 把D:\WebServer\php\php.ini-dist複製一份成php.ini。
修改php.ini
要建立開發環境,有些設定需打開,請將其前面的分號註解拿掉,相關需修改的設定如下:
錯誤訊息用
error_log = "d:/WebSerevr/logs/php_error.log"
PHP 5要先設定timezone,要不然程式會一直出現警告。
date.timezone = Asia/Taipei
如果有上傳檔案需求,請修改
post_max_size = 8M (請視需求修改)
upload_max_filesize = 2M (一般比post_max_size小)
相關路徑設定:
upload_tmp_dir = "D:\WebServer\temp\upload" (上傳暫存路徑)
include_path = ".;D:\WebServer\php\PEAR"
session.save_path = "d:\WebServer\temp\session"
extension_dir = "d:\WebServer\php\ext"
接下來是常用的延伸套件:
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_pdo_sqlite.dll
extension=php_sqlite.dll
修改httpd.conf
透過修改httpd.conf來讓apache認識php,使php成為apache的模組。
修改d:\WebServer\Apache2.2\conf\httpd.conf以下設定:
Listen 80 將其改成 Listen 8081
ServerName *:80 將其改成 ServerName *:8081
註:Listen和ServerName兩個port的值要一樣
在httpd.conf最底下加入
PHPIniDir "D:/WebServer/php/"
LoadModule php5_module "D:/WebServer/php/php5apache2_2.dll"
AddType application/x-httpd-php .php
修改DirectoryIndex,加入index.php
DirectoryIndex index.html index.php
這樣apache就會以Module的方式來執行php了。
繼續修改httpd.conf其他設定
打開 LoadModule rewrite_module modules/mod_rewrite.so
修改預設網站根目錄
DocumentRoot "D:/WebServer/wwwroot"
<Directory "D:/WebServer/wwwroot">
啟用.htaccess,找到<Directory />,將AllowOverride None的None改成All;<Directory "D:/WebServer/wwwroot">區段內的AllowOverride None也改成All。
測試
測試前,懶人大絕,電腦重開,來讓各設定生效。
先在D:\WebServer\wwwroot底下產生index.php,內容如下:
<?php
phpinfo();
?>
在瀏覽器鍵入 http://localhost:8080/ 及 http://localhost:8081/index.php 熟悉的兩個畫面應該就會出現了
閱讀全文...
規劃目錄結構
打算仿造IIS將相關程式放在同一目錄底下,以下是我規劃的目錄結構:
註:我把整個目錄放在D槽,和我的Windows系統目錄C槽分開,這樣當OS系統有任何問題,需要重灌時,開發環境的設定和資料不會消失。
下載要安裝的各軟體
Apache
如網站需要SSL支援,請下載包含OpenSSL的版本。
http://httpd.apache.org/download.cgi (Win32 Binary including OpenSSL 0.9.8r: httpd-2.2.19-win32-x86-openssl-0.9.8r.msi)
PHP
請盡量選擇最新穩定版本,我打算讓php搭配apache以module來執行,故選擇 VC6 x86 Thread Safe的版本;如果要搭配IIS,請選擇VC9的版本,需要Microsoft 2008 C++ Runtime (x86)。
因要手動安裝,所以下載沒有安裝檔的zip package即可。
http://windows.php.net/download/ (VC6 x86 Thread Safe: php-5.2.17-Win32-VC6-x86.zip)
安裝Apache
執行httpd-2.2.19-win32-x86-openssl-0.9.8r.msi,大都直接按[Next]即可安裝完。要注意的地方如下:
1. 安裝到Server Information時,其中Install Apache HTTP Server 2.2 programs and shortcuts for選項,請選擇only for Current User, on Port 8080, when started Manually. 當然如果確定不使用IIS,也可以使用 Port 80的選項。
2. 安裝到Destination Folder時,請將安裝目錄改變成D:\WebServer\Apache2.2。
註:雖然指定Port 8080,安裝時可能會遇到apache啟動失敗的訊息,apache還是會用80去啟動,先可不管,等安裝完php,所有設定一次來搞定。
安裝PHP
1. 將php-5.2.17-Win32-VC6-x86.zip解壓縮到D:\WebServer\php目錄下。
2. 把D:\WebServer\php\php.ini-dist複製一份成php.ini。
修改php.ini
要建立開發環境,有些設定需打開,請將其前面的分號註解拿掉,相關需修改的設定如下:
錯誤訊息用
error_log = "d:/WebSerevr/logs/php_error.log"
PHP 5要先設定timezone,要不然程式會一直出現警告。
date.timezone = Asia/Taipei
如果有上傳檔案需求,請修改
post_max_size = 8M (請視需求修改)
upload_max_filesize = 2M (一般比post_max_size小)
相關路徑設定:
upload_tmp_dir = "D:\WebServer\temp\upload" (上傳暫存路徑)
include_path = ".;D:\WebServer\php\PEAR"
session.save_path = "d:\WebServer\temp\session"
extension_dir = "d:\WebServer\php\ext"
接下來是常用的延伸套件:
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_pdo_sqlite.dll
extension=php_sqlite.dll
修改httpd.conf
透過修改httpd.conf來讓apache認識php,使php成為apache的模組。
修改d:\WebServer\Apache2.2\conf\httpd.conf以下設定:
Listen 80 將其改成 Listen 8081
ServerName *:80 將其改成 ServerName *:8081
註:Listen和ServerName兩個port的值要一樣
在httpd.conf最底下加入
PHPIniDir "D:/WebServer/php/"
LoadModule php5_module "D:/WebServer/php/php5apache2_2.dll"
AddType application/x-httpd-php .php
修改DirectoryIndex,加入index.php
DirectoryIndex index.html index.php
這樣apache就會以Module的方式來執行php了。
繼續修改httpd.conf其他設定
打開 LoadModule rewrite_module modules/mod_rewrite.so
修改預設網站根目錄
DocumentRoot "D:/WebServer/wwwroot"
<Directory "D:/WebServer/wwwroot">
啟用.htaccess,找到<Directory />,將AllowOverride None的None改成All;<Directory "D:/WebServer/wwwroot">區段內的AllowOverride None也改成All。
測試
測試前,懶人大絕,電腦重開,來讓各設定生效。
先在D:\WebServer\wwwroot底下產生index.php,內容如下:
<?php
phpinfo();
?>
在瀏覽器鍵入 http://localhost:8080/ 及 http://localhost:8081/index.php 熟悉的兩個畫面應該就會出現了
閱讀全文...
2011年7月4日 星期一
在Windows安裝php開發環境
本文主要介紹如何在 Windows 上建置 PHP 的開發環境,以供有興趣的朋友參考。
1. 下載要安裝的各軟體
1.1. Apache http://httpd.apache.org/download.cgi
請盡量選擇最新穩定版本下載: Win32 Binary without crypto (no mod_ssl) (MSI Installer): httpd-2.2.19-win32-x86-no_ssl.msi
有需要SSL的請下載SSL版本
1.2. PHP http://www.php.net/downloads.php(windows use http://windows.php.net/download/)
請盡量選擇最新穩定版本: php 5.2.17 VC6 x86 Thread Safe installer
但有幾點要特別注意
a. 搭配apache ,請選擇 VC6 的版本
b. 搭配 IIS ,請選擇 VC9 的版本,需要Microsoft 2008 C++ Runtime (x86)
2. 軟體安裝順序
因為php安裝過程中會要求設定apache,所以請先安裝apache。
2.1 安裝apace
典型windows軟體安裝步驟,照圖形上數字點選即可完成安裝
設定網域,請在5, 6, 7填入適當的值
如果windows系統有安裝IIS,請選擇 only for the Current User, on Port 8080, when started Manually.
安裝目錄強烈建議不要更動,以免安裝時造成不必要的路徑問題
安裝完成後,右下角的工作列會有一個 apache 監視項目。
安裝完成後,進行簡單設定,請打開 C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf
目標為下列兩個項目:
# 管理者信箱,前提是你的伺服器要有寄送功能,這樣就能收到錯誤訊息
ServerAdmin admin@freefox.com
# 指定WEB SERVER的PORT
ServerName *:80
重啟 apache
啟動錯誤怎麼辦,請善用事件檢視器查詢錯誤原因
常見錯誤: OS 10013
原因:因Windows IIS已經使用了 port 80,安裝時設定網域沒有選擇only for the Current User, on Port 8080, when started Manually. 造成 port 衝突,apache無法啟動。
解決:打開C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf,找到
Listen 80 將其改成 Listen 8081
ServerName *:80 將其改成 ServerName *:8081
記得兩個port的值要一樣,再重新啟動 apache即可。
測試
2.2. 安裝php
選擇apache版本
選擇apache路徑
特殊選項安裝,如可以先安裝mysql模組
安裝完PHP後,要讓apache認得PHP,此時需要重啟apache,卻重啟失敗,從錯誤訊息得知無法載入php5apache2_2.dll
解決:請打開C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf 檢視php安裝過程自動加入的設定...
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir ""
LoadModule php5_module "php5apache2_2.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
改成
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir "C:/Program Files/PHP/"
LoadModule php5_module "C:/Program Files/PHP/php5apache2_2.dll"
AddType application/x-httpd-php .php
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
存檔後,重啟apache,並在C:\Program Files\Apache Software Foundation\Apache2.2\htdocs目錄下新增一個index.php,檔案內容為
phpinfo();
?>
然後用瀏覽器檢視http://localhost:8081/index.php,如果有顯示PHP的相關設定資訊即成功了。類似畫面如下:
建置完的感覺,自動安裝設定,真的一點都不靠普,還不如以前下載ZIP,所有設定要自己搞定來的實在,至少不用猜錯在哪再去改設定。
閱讀全文...
1. 下載要安裝的各軟體
1.1. Apache http://httpd.apache.org/download.cgi
請盡量選擇最新穩定版本下載: Win32 Binary without crypto (no mod_ssl) (MSI Installer): httpd-2.2.19-win32-x86-no_ssl.msi
有需要SSL的請下載SSL版本
1.2. PHP http://www.php.net/downloads.php(windows use http://windows.php.net/download/)
請盡量選擇最新穩定版本: php 5.2.17 VC6 x86 Thread Safe installer
但有幾點要特別注意
a. 搭配apache ,請選擇 VC6 的版本
b. 搭配 IIS ,請選擇 VC9 的版本,需要Microsoft 2008 C++ Runtime (x86)
2. 軟體安裝順序
因為php安裝過程中會要求設定apache,所以請先安裝apache。
2.1 安裝apace
典型windows軟體安裝步驟,照圖形上數字點選即可完成安裝
設定網域,請在5, 6, 7填入適當的值
如果windows系統有安裝IIS,請選擇 only for the Current User, on Port 8080, when started Manually.
安裝目錄強烈建議不要更動,以免安裝時造成不必要的路徑問題
安裝完成後,右下角的工作列會有一個 apache 監視項目。
安裝完成後,進行簡單設定,請打開 C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf
目標為下列兩個項目:
# 管理者信箱,前提是你的伺服器要有寄送功能,這樣就能收到錯誤訊息
ServerAdmin admin@freefox.com
# 指定WEB SERVER的PORT
ServerName *:80
重啟 apache
啟動錯誤怎麼辦,請善用事件檢視器查詢錯誤原因
常見錯誤: OS 10013
原因:因Windows IIS已經使用了 port 80,安裝時設定網域沒有選擇only for the Current User, on Port 8080, when started Manually. 造成 port 衝突,apache無法啟動。
解決:打開C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf,找到
Listen 80 將其改成 Listen 8081
ServerName *:80 將其改成 ServerName *:8081
記得兩個port的值要一樣,再重新啟動 apache即可。
測試
2.2. 安裝php
選擇apache版本
選擇apache路徑
特殊選項安裝,如可以先安裝mysql模組
安裝完PHP後,要讓apache認得PHP,此時需要重啟apache,卻重啟失敗,從錯誤訊息得知無法載入php5apache2_2.dll
解決:請打開C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf 檢視php安裝過程自動加入的設定...
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir ""
LoadModule php5_module "php5apache2_2.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
改成
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir "C:/Program Files/PHP/"
LoadModule php5_module "C:/Program Files/PHP/php5apache2_2.dll"
AddType application/x-httpd-php .php
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
存檔後,重啟apache,並在C:\Program Files\Apache Software Foundation\Apache2.2\htdocs目錄下新增一個index.php,檔案內容為
phpinfo();
?>
然後用瀏覽器檢視http://localhost:8081/index.php,如果有顯示PHP的相關設定資訊即成功了。類似畫面如下:
建置完的感覺,自動安裝設定,真的一點都不靠普,還不如以前下載ZIP,所有設定要自己搞定來的實在,至少不用猜錯在哪再去改設定。
閱讀全文...
訂閱:
文章 (Atom)














