มา command line window กันเถอะ

ผมก็พิมพ์ๆ ไปงั้นๆแหล่ะครับ
ประเด็น จะบันทึกไว้อ่าน 55+ เอาไปลองกันได้ครับ

1. Scan Disk
start->run
chkdsk /f c:
2. Disk Defragmenter
start -> run
defrag.exe c: -w -f
3. Stop|Start Service
start -> run
net stop|start service_name
4. List all folder & subfolder name
start->run
notepad  แล้วบันทึกเป็น .bat

@echo off
cls

FOR /f "tokens=*" %%G IN ('dir /ad /b /s c:\temp\driver') DO echo %%G
pause



credit: http://www.vistax64.com/tutorials/81786-disk-defragmenter-command-prompt.html

ทำ IIS7.0 ให้แสดง PHP Error

ปกติแล้ว IIS จะไม่แสดง Error หรือ Notice จาก การประมวลผล PHP โดยตรงครับ ต้องไปหาดูใน log
ผมมีวิธี ดังนี้ครับ
1. แบบทั้งหมด (ทุก site ใน server)

appcmd.exe set config -section:system.webServer/httpErrors
/existingResponse:"PassThrough" /commit:apphost


2.เลือกบางเว็บไซต์

appcmd.exe set config "Default Web Site/application(ชื่อเว็บไซต์)"  -section:system.webServer/httpErrors /existingResponse

หรือจะเปิดไฟล์ web.config แล้ว แก้ไขตามนี้


<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpErrors existingResponse="PassThrough" />
    </system.webServer>
</configuration> 

แล้วลองดูผลครับ

credit: http://blogs.iis.net/kehand/archive/2009/08/09/php-and-custom-error-pages.aspx

เซ็ต IIS 7.0 + PHP.ini แบบแยกแต่ละเว็บไซต์

อยากให้ IIS แยกไฟล์ php.ini แต่ละ subdomain หรือ domain ออกจากกัน มาดูวิธีกันครับ

1.เข้า Webserver Manager (IIS) (control panel->administration tools->iis)
2.เลือกไซต์ click ขวา ->add website

3.ใส่ชื่อเว็บไซต์ลงไป แล้วเลือก application pool [ปกติผมไม่เลือกสร้างใหม่ตามชื่อไซต์ครับ]
4.เลือก physical path  คือตำแหน่งที่ต้องการเก็บเว็บไซต์นั้นไว้ (กรณีไม่เก็บไว้ใน inetpub\www)
5.เลือกที่ folder ที่กำหนด physical path คลิกขวา -> properties->security[tab] คลิกปุ่ม Edit  แล้ว Add แล้ว Advance แล้ว Find Now

6.จะขึ้นรายชื่อ ให้เลือก IIS_IUSRS แล้ว กดปุ่ม OK
7.ทำให้ IIS_IUSRS สามารถ Read,Write,Execute Folder ได้ ด้วยการ เช็คเลือก Full control แล้ว กดปุ่ม OK

8. เปิดไฟล์ web.config ใน folder เว็บไซต์ที่กำหนดให้กับ Physical path  แล้ว แทรก code ด้านล่างลงไป ระหว่าง <system.webServer></system.webServer> แล้วบันทึก



<handlers>
            <add name="PHP53_via_FastCGI" path="*.php" verb="GET,HEAD,POST" modules="FastCgiModule" scriptProcessor="C:\Program Files\PHP\php-cgi.exe|-d open_basedir=d:\input_form" resourceType="Either" requireAccess="Script" />
</handlers>


9. start->run พิมพ์ %windir%\system32\inetsrv\config\ แล้วเปิดไฟล์ applicationHost.config แล้วค้นหา คำว่า fastCgi  แล้วแทรก code ลงไประหว่าง <fastCgi></fastCgi> แล้วบันทึก


<application fullPath="ตำแหน่งที่ตั้ง php-cgi.exe" arguments="-d open_basedir=ตำแหน่งที่เก็บเว็บไซต์">
<environmentVariables>
                    <environmentVariable name="PHP_FCGI_MAX_REQUESTS" value="10000" />
                    <environmentVariable name="PHPRC" value="ตำแหน่งที่เก็บเว้บไซต์" />
                </environmentVariables>
</application>

เช่น
  <application fullPath="C:\Program Files\PHP\php-cgi.exe" arguments="-d open_basedir=D:\input_form">
<environmentVariables>
                    <environmentVariable name="PHP_FCGI_MAX_REQUESTS" value="10000" />
                    <environmentVariable name="PHPRC" value="D:\input_form" />
                </environmentVariables>
</application>

10. restart iis โดยไปที่ start->run พิมพ์ iisreset หรือ จะใช้ IIS webserver manager แล้วเลือกไซต์แล้ว click restart ก็ได้ครับ แล้วลองทดสอบดูครับ จะได้เหมือนผมไหม :)


วิธีติดตั้ง IIS +PHP 

resource:
http://www.iis.net/learn/application-frameworks/install-and-configure-php-on-iis/enable-per-site-php-configuration-on-iis-60-and-iis-7-and-above
http://ruslany.net/2008/07/per-site-php-configuration-with-iis-fastcgi/
http://www.iis.net/learn/web-hosting/web-server-for-shared-hosting/fastcgi-with-php#Per-site

มาแก้สารพันปัญหา Codeigniter Session กันครับ

ผมปวดหัวจากการใช้งาน session ของ framework ตัวนี้มากๆ ก็เลยหาวิธีได้มาประมาณนี้ครับ

กรณีทำบนเครื่อง developer

  1. เปลี่ยนจาก localhost เป็น domain หลอกๆซะ โดยแก้ที่ C:\windows\system32\drivers\etc\hosts แล้ว codeigniter จะไม่ generate session_id ใหม่ให้ทุกหน้า (แต่ยังคง generate ใหม่ทุก 3 นาที หรือตามเวลาที่ตั้งไว้ใน config )
  2. การทำ Application หลายๆตัวบน Instance เดียวกันมันดีน่ะ แต่ บางที Session อาจเป็นปัญหาที่ทำให้ปวดหัว อยู่่เหมือนกัน 
    1. วิธีแก้ คือ แก้ไข config ไฟล์ทุก application ให้เหมือนกัน หากใช้ DB เก็บ Session ก็ต้องเหมือนกันทั้งหมด (กรณี share session)
    2. แก้ไข (relative path) ตัวแปร $system_path,$application_folder ไฟล์ index.php ทุก application 
    3. แก้ไข ชนิดข้่อมูล user_agent ตาราง ci_session ให้มีขนาด 255 (varchar)
    4. แก้ไข ชนิดข้อมูล user_data ตาราง ci_session ให้เป็น text