星期四, 8月 29, 2013

redhat 上裝 rpm

因為公司鎖ftp,不能開心的用yum裝rpm
dependency只能遇到一個抓一個rpm... 快起肖了

不過裝完也對rpm的命名比較理解
過去看同一rpm卻有好幾個檔,一直搞不懂要載哪一個
什麼el5, el6, remi, ...
裝非redhat的rpm 還得下--replacefiles
不然不給裝... 機車 搞好久才知道要加這東西
rpm -ivh xxx.rpm --replacefiles
還算是有學到東西 嗚...

為了裝lamp,真是吃盡苦頭
升級個PHP 5.1 到 5.4
載超過17個rpm,還不包含載錯裝錯.... 嗚...
而且要先透過另一台電腦抓,再傳進來... 因為鎖ftp....

好站推薦

  • Linux Package Search
    當然google還是最快,不過這個網站以distribution分rpm
    很直覺的,很方便

    而且最方便的是一併列出dependency的rpm
    都要哭了...

星期六, 8月 17, 2013

Phalcon Webtools只能在local machine使用

因安全問題只能在localhost上用 webtools...
用其他ip連webtools就會出現以下訊息
Phalcon\Exception: WebTools can only be used on the local machine

習慣裝在linux上開發...
因此都用vm模擬,再用pietty連進去開發
所以一定不會是localhost~ 杯具...

解決方法
  • 改config
    開啟[project]/public/webtools.config.php
    define('PTOOLSPATH', '/home/phalcon/phalcon-devtools');
    /* you can set ADMINIP as IP 192.168.0.1 or SUBNET 192. or 10.0.2. or 86.84.124. */
    define('ADMINIP', '192.168.');  //改成自己的ip就可以了
    

  • 終極解決方法
    看了一下Webtool的code~ 就偷偷改一下,跳開檢查
    記得上production要改回去捏...
    不然開了個大後門....

    file: phalcon-devtools/scripts/Phalcon/Web/Tools/controllers/ControllerBase.php
    截錄檢查程式碼
    就在直接else的那段加上return false囉~ = =+

Install Phalcon Developer Tools

也滿簡單的就照github上的README安裝步驟走~
不過在手動安裝需要微調一下,以便多人共用
以下針對手動安裝調整為自己的寫法
  1. Installation via PEAR
  2. Installation via Composer
  3. 手動安裝
    cd /opt #以便所有人可以共用
    git clone https://github.com/phalcon/phalcon-devtools.git
    ln -s /opt/phalcon-devtools/phalcon.php /usr/bin/phalcon
    chmod ugo+x /usr/bin/phalcon

這樣應該就可以用了,試一下
# phalcon //應該就有反應了
  1. Basic
    指令查詢
    # phalcon
  2. Project
    建立Project  #phalcon project [project]
    啟動webtools
    #phalcon webtools enable  //在phalcon project的根目錄裡執行指令
    指令是這麼寫,但我試會發生
    Error: Document root cannot be located
    指定實際路徑就可以了 --directory=[phalcon project path]
    ex. store為 phalcon project
    # phalcon webtools enable --directory=/var/www/html/store
    再用browser開啟 http://[ip]/store/webtools.php
    就可以看到webtools的畫面的
  3. Controller
    建立 Controller
    #phalcon controller [controller name]
  4. Model
    產生model
    #phalcon model [model name]
    產生CRUD
    #phaclon scanfold --table-name [table]
  5. View
    沒提供哩....
    透過CRUD直接產生action及對應的model及view吧

學習PHP

最近系統好多問題,可能這樣大頭想瞭解一下PHP語法,問有沒有什麼推薦書籍
自己都是跟google大神學的... 也不知有什麼推薦書籍
就順便整理資源一下

從範例學習

PHP語法不難,我想從範例學應該最快
又請google大神找了一下
覺得 TwHappy寫給初學者的php範例 還滿不錯的
就推薦給大頭

以下截錄網址

只是玩玩語法而已,還要架個server就太麻煩了
就順便附上線上寫PHP的網址

Coding Standard

PHP-FIG 組織針對 PHP framework 制定 Coding Standard
雖然不是寫framework,但從follow coding standard也算"國際化"了
  • PSR-0 Autoloading Standard
  • PSR-1 Basic Coding Standard
  • PSR-2 Coding Style Guide

星期五, 8月 16, 2013

Phalcon.so 無法載入

不知為何大於v1.2.1的Phalcon一直發生以下錯誤
Fatal error: Class 'Phalcon\Config' not found in /var/www/html/store/app/config/config.php on line 3
查到是因為phalcon.so沒載入
但compile都成功,而v1.2.0以下也都可以成功載入Phalcon.so

後來發現也有人遇到相同的問題 - Phalcon installation on CentOS
就回覆在 /etc/php.d/裡新增個zzzzz.ini,內容如下
extension=phalcon.so
restart apache就可以了...

太神奇了... 真的這樣就成功了....
又可以fly with Phalcon了...

仔細讀一下
原來v1.2.1後 改用native JSON
因此會出現
undefined symbol: php_json_decode_ex in Unknown on line 0
難怪只有v1.2.0以下才會正常...

而將phalcon.so放到zzz.ini的原因是...
要在json.ini後,讀phalcon.ini,才不會衝到
可以試著吧zzz.ini改成aaa.ini,php_json_decode_ex的問題會再發生


雖然安裝phalcon真的是滿簡單的~
不過還是遇到小問題,還是記錄一下好了

==env==
OS: CentOS 6
PHP Version: 5.4
  1. download
    # git clone git://github.com/phalcon/cphalcon.git
    或者是用載的
    # wget https://github.com/phalcon/cphalcon/archive/master.zip
    # unzip cphalcon-master.zip
  2. install
    # cd cphalcon-master/build
    # sudo ./install 
  3. add extension
    # vi /etc/php.d/phalcon.ini #不要加在/etc/php.ini裡 !!!會有json錯誤
    extension=phalcon.so #加最後面
  4. Restart apache
    # service httpd restart
  5. 驗證
    # php –m | grep phalcon #有出現就表示完成

星期一, 8月 12, 2013

Install ssh2 for PHP without YUM on RHEL

為了裝個ssh2 for php 得額外安裝一堆...
幸好rpmfind還挺好用的...
不然都要放棄了...

安裝流程照官網上寫的 - CentOS 6.2 64bit Installation Steps
  1. download the libssh2 package from http://libssh2.org, command as following:
    tar vxzf libssh2-1.4.2.tar.gz
    cd libssh2-1.4.2
    ./configure
    make
    make install
  2. download the php-ssh2 package from http://pecl.php.net/package/ssh2:
    tar vxzf ssh2-0.11.3
    cd ssh2-0.11.3
    phpize
    ./configure --with-ssh2
    make
    make install

    and the ssh2.so file will copy into /usr/lib64/php/modules
    check it.
  3. modify the php.ini

    vi /etc/php.ini

    add the "extension=ssh2.so" to the extension part of php.ini
  4. check the environment of php, use phpinfo();
  5. enjoy

主要兩個套件
但相依很多,缺什麼裝什麼,所以實際上是倒過來裝
遇一個殺一個了... 要有耐心... 套件就到rpmfind上找
  • libssh
    1. libssh2-1.4.2-1.el6.i686.rpm
    2. libgcrypt-1.4.5-9.el6_2.2.i686
    3. gcc-c++-4.4.7-3.el6.x86_64.rpm
    4. libstdc++-devel-4.4.7-3.el6.i686.rpm
  • ssh2
    1. ssh2-0.12.tgz
    2. php-devel-5.1.6-39.el5_8.i386.rpm
      下phpize需要

心得...
有yum好幸福,沒yum好痛苦...(還按韻ㄝ)
光一堆dependency就快放棄了...
還要找版本相融的rpm來裝...
只能靠deadline來逼自己一步步下去
不過套件找齊後,一步步裝回去還挺有成就感的...