Chuyển đến nội dung chính

[PHP] How to compiled PHP 5.4 Extension in Windows

Trước khi thực hiện, bạn phải chắc là máy bạn đã cài visual studio 2008 & Windows SDK 6.1 (Windows SDK for Windows Server 2008 & .Net framework 3.5 (link tải)


- Download php_sdk và deps từ địa chỉ http://windows.php.net/downloads/php-sdk/
- Download mã nguồn PHP từ github: https://github.com/php/php-src/tree/PHP-5.4.35



Giải nén thư mục php-sdk, đặt vào biến môi trường để gõ cho tiện.Ví dụ tôi giải nén thư mục php-sdk tại ở E thì thêm đường dẫn E:\php-sdk\bin vào biến PATH.


Tạo thư mục C:\php
Từ start menu, chọn All Programs, tìm đến Microsoft Windows SDK 6.1, bật CMD Shell lên.
Gõ lệnh: 
cd C:\php
Tiếp đến gõ lệnh:
setenv /x86 /xp /release
 
Các tùy chọn: 
- x86: win32
- xp: chọn Windows XP là target
- release: Bản realease
 
Gõ lệnh: phpsdk_setvars.bat
Gõ tiếp: phpsdk_buildtree.bat phpdev
 
Vào thư mục C:\php, bạn sẽ thấy thư mục C:\php\phpdev
Bên trong sẽ có các thư mục vc6, vc8, vc9, copy vc9 -> vc11
trong mỗi thư mục sẽ có thư mục x86 hay x64.
 
Giải nén source code php vào thư mục C:\php\phpdev\vc9\x86
Giải nén toàn bộ thư mục deps vào C:\php\phpdev\vc9\x86
 
Có thể tải các extension từ pecl, tạo thư mục pecl ngang cấp với thư mục deps & thư mục php-src

Di chuyển đến thư mục php-src. Gõ lệnh buildconfig. Bạn sẽ gặp lỗi sau
Input Error: There is no script engine for file extension ".js".
 
 Edit file buildconfig.bat
cscript /nologo win32\build\buildconf.js %* 
thành 
cscript /nologo /e:jscript win32\build\buildconf.js %*

Gõ lại lệnh buildconfig ta được file configure.bat mới. Tiếp tục sửa file configure.bat, thêm tham số /e:jscript

Gõ lệnh configure --help để biết các extension hỗ tr

Gõ configure --enable-snapshot-build --disable-debug --enable-zts --enable-apache2-4handler --enable-apache2-2handler --enable-apache2filter --enable-apache2-2filter --disable-cgi --enable-cli --disable-crt-debug --disable-isapi --disable-nsapi --with-curl --without-ereg --enable-fileinfo --with-gd --without-t1lib --with-gettext --with-mhash --enable-mbstring --with-m
crypt --with-openssl --enable-apc --with-imagick --enable-pdo --with-xdebug=shared --with-pdo-mysql  --with-mysql --with-xmlrpc --with-mysqli



Sau đó gõ nmake snap.

Chờ chương trình compile xong, và kết quả bạn thu được là bản PHP nằm trong thư mục Release_TS

 Tham khảo: 
  1. https://wiki.php.net/internals/windows/stepbystepbuild
  2. http://www.bowu.org/php/build-php-from-source-with-pecl-extensions.html
  3. http://www.sitepoint.com/compiling-php-from-source-on-windows/  
 

Nhận xét

Bài đăng phổ biến từ blog này

Tạo SVN Server & import project lên svn

Hướng dẫn tạo svn repository, cấu hình apache & đẩy dự án lên SVN Đối với một vài dự án nhỏ bạn không được cấp svn, bạn không thể sử dụng những dịch vụ svn cung cấp miễn phí: Google code, bitbucket,... lúc đó điều đầu tiên nảy sinh trong đầu các bạn là cài đặt svn server trên máy mình để tiện sử dụng. Điều kiện, máy bạn cần cài đặt apache & svn - Trên Windows: các bạn có thể cài Xampp, wampserver hoặc apache riêng & TortoiseSVN - Trên Mac OSX: apache & svn đã có mặc định Ở đây mình hướng dẫn sử dụng trên hệ điều hành MacOSX ( do mình sử dụng máy Mac) Bước 1 . Tạo thư mục SVN. Để có thể add nhiều project vào svn, các bạn nên tạo một thư mục cha ví dụ: svn. Ở đây mình tạo thư mục svn với đường dẫn /Data/svn Bước 2 . Tạo file /Data/svn/.svn-policy-file [groups] team1 = longhoanggiang, giangnh [/] * = [symfony2jobeet:/] @team1 = rw ngongocquynh = r * =   Dấu * ở đây có nghĩa là tất cả anonymous user (ẩn danh) sẽ chỉ có quyền đọc (read). User longh

Change Timezone in CentOS | Thay đổi múi giờ trong CentOS

Timezone of VietNam is Asia/Ho_Chi_Minh. To change default timezone in centos, follow this struction.   mv /etc/localtime /etc/localtime.bak ln -s /usr/share/zoneinfo/Asia/Ho_Chi_Minh /etc/localtime Type date in terminal and you will see time in Viet Nam In Linux, the system time zone is determined by the symbolic link /etc/localtime . This link points to a time zone data file that describes the local time zone. The time zone data files are located at either /usr/lib/zoneinfo or /usr/share/zoneinfo depending on what distribution of Linux you use. For example, on a SuSE system located in New Jersey the /etc/localtime link would point to /usr/share/zoneinfo/US/Eastern . On a Debian system the /etc/localtime link would point to /usr/lib/zoneinfo/US/Eastern . If you fail to find the zoneinfo directory in either the /usr/lib or /usr/share directories, either do a find /usr -print | grep zoneinfo or consult your distribution's do