Setting up PHP & MySQL & Phalcon on OS X 10.10 Yosemite

featureimage

Setting up PHP & MySQL on OS X 10.10 Yosemite

สำหรับคนที่ Develop PHP บน Mavericks อยู่ แล้วเสี้ยนไปลง OS X ตัวใหม่ 10.10 จะพบว่าไฟล์ Config ของ Apache และ PHP บางส่วนถูกเขียนทับ หลังจากลง Yosemite ทำให้ไม่สามารถใช้งาน Environment บางอย่างที่เราเคยทำไว้อย่างดีบน Mavericks ได้ แสรดดดด

วิธีแก้คือ ทำมันใหม่ (ติดตั้งใหม่) หรือไม่ก็เอามันกลับมา (ไปตามแก้ไฟล์ที่ถูกเปลี่ยน) สำหรับคนขี้เกียจแล้ว ไหนๆ ก็ลง OS ใหม่แล้ว งั้นก็ทำ Environment ให้มันใหม่ด้วยเลยก็แล้วกัน (แต่จะว่าไป ก็ไม่ถึงกับทำใหม่ทั้งหมด เพราะ config บางอย่าง ก็ไม่ไ้ดถูกเขียนทับ เช่น vhost เป็นต้น)

Apache

OS X 10.10 Yosemite มาพร้อม Apache 2.4 และ PHP 5.5 ที่ต้องทำคือ ไปเอา Config Apache กลับมา

sudo vim /etc/apache2/httpd.conf  

แล้วไปไล่เอา comment หน้าบรรทัดพวกนี้ออก (ตรงนี้ ใครใช้อะไรพิสดาร ก็ไล่เปิด comment กันเอาเองนะ)

#Include /private/etc/apache2/extra/httpd-vhosts.conf
...
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
#LoadModule php5_module        libexec/apache2/libphp5.so

ตามหา DirectoryIndex แล้วเพิ่ม index.php เข้าไป

<IfModule dir_module>  
    DirectoryIndex index.html index.php
</IfModule>  

ตามหา <Directory "/Library/WebServer/Documents"> แล้วแก้ AllowOverride None ที่อยู่ใน section นี้เป็น AllowOverride All เพื่อให้ .htaccess ใช้งานได้ เสร็จแล้ว Restart Apache ซักทีนึง

sudo apachectl restart  

(ไฟล์ httpd-vhosts.conf ที่เราเคยมีจะไม่ถูกเขียนทับ)

PHP

สมัยนี้ลง PHP ง่ายมากๆ เพราะไม่ต้องไปตามหาวิธีติดตั้ง Extension ให้วุ่นวาย เค้าทำมาให้แล้วแบบสวยๆ ที่ http://php-osx.liip.ch/

curl -s http://php-osx.liip.ch/install.sh | bash -s 5.6  

รันแค่คำสั่งข้างบนแล้วก็รอ แค่นี้ก็จะได้ PHP 5.6 ที่มาพร้อม Extension ที่จำเป็นต้องใช้ เยอะซะจนเหลือใช้... ถ้าไม่ทำอะไรท่ายากพิศดาร รับรองว่าเอาอยู่

แต่เดี๋ยวก่อน อย่าลืมว่า OS X เค้าก็มี PHP version 5.5 ติดด้วย เราเลยต้องไปบอก Apache ว่า เราจะใช้ PHP 5.6 ที่เพิ่งติดตั้งไปใหม่ ให้แก้ /etc/apache2/httpd.conf

จาก

LoadModule php5_module        libexec/apache2/libphp5.so  

เป็น

LoadModule php5_module /usr/local/php5/libphp5.so  

Phalcon

Yosemite ทำนิสัยกับ brew update ซึ่งเราจำเป็นต้องใช้ brew ในการ upgrade gcc ซึ่ง gcc เนี่ยจำเป็นต้องใช้ในการ compile Phalcon เพราะแบบนี้ เราเลยต้องแก้ปัญหาตั้งแต่ brew...

แก้ปัญหา brew update ไม่ได้

เปิด Terminal แล้วจัดการ

vim /usr/local/Library/brew.rb  

แก้บรรทัดแรก จาก

#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -

เป็น

#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0

แล้ว

cd $(brew --repository)  
git add -A  
git commit -m 'new ruby version 2.0'  

จากนั้นก็ update brew

brew update  

แก้ปัญหา ติดตั้ง gcc บน Yosemite ไม่ได้

brew edit gcc  

ตามหา Code

require "formula"

class Gcc < Formula  
  def arch
    if Hardware::CPU.type == :intel
      if MacOS.prefer_64_bit?
        "x86_64"
      else
        "i686"
      end
    elsif Hardware::CPU.type == :ppc
      if MacOS.prefer_64_bit?
        "powerpc64"
      else
        "powerpc"
      end
    end
  end

  def osmajor
    `uname -r`.chomp
  end

แล้วใส่ code สำหรับ patch ต่อท้าย

# edit by b.nelissen 20140805
# tobinjones patch gcc https://github.com/Homebrew/homebrew/issues/29845
patch do  
    url "https://gcc.gnu.org/bugzilla/attachment.cgi?id=33180"
    sha1 "def0cb036a255175db86f106e2bb9dd66d19b702"
end  

จัดการ upgrade gcc เสร็จแล้วเราจะได้ gcc-4.9.1 มาใช้

brew upgrade gcc  

ติดตั้ง Phalcon 1.3

cd /tmp  
git clone git://github.com/phalcon/cphalcon.git  
cd cphalcon/build/  
sudo ./install  

ถ้าไม่มีปัญหาอะไรก็จะพบข้อความ Build Complete

Build complete.  
Don't forget to run 'make test'.

Installing shared extensions:     /usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226/

อย่าลืมไปเพิ่ม config extension extension=phalcon.so ที่ php.ini

sudo vim /usr/local/php5/lib/php.ini  

เท่านี้ เราก็จะใช้ Phalcon บน OS X 10.10 Yosemite ได้อย่างสบายใจ

แหล่งข้อมูล
- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61407
- http://jcvangent.com/fixing-homebrew-os-x-10-10-yosemite/
- http://bordoni.me/environment/gcc-os-x-yosemite-via-homebrew/