Home > Tags > PHP

PHP

[Mac]SnowLeopardで開発環境構築するよ – MacPortsでApache、PHP、MySQL、PostgreSQLをインストールする[SnowLeopard]

  1. Apacheをインストール
    • インストール
      $ sudo port install apache2
    • 自動起動設定
      $ sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
    • httpd.confを編集
      $ sudo vi /opt/local/apache2/conf/httpd.conf
      ServerAdmin you@example.com
      ↓
      ServerAdmin webmaster@localhost
       
      ServerName www.example.com:80ServerName localhost
       
      DocumentRoot "/opt/local/apache2/htdocs"DocumentRoot "/Users/bubbkis/Sites"
       
      <Directory />
          Options FollowSymLinks
          AllowOverride None
      #    Order deny,allow ←コメントアウト追加
      #    Deny from all ←コメントアウト追加
      </Directory>
       
      <Directory "/opt/local/apache2/htdocs">
      ↓
      <Directory "/Users/bubbkis/Sites">
       
      ## <Directory "/Users/bubbkis/Sites">内のOptionsとAllowOverrideを以下の様に修正。
      Options Indexes Includes ExecCGI FollowSymLinks MultiViews
      AllowOverride All
       
      DirectoryIndex index.html
      ↓
      DirectoryIndex index.php index.html index.htm
       
      ## <Directory "/opt/local/apache2/cgi-bin">内のOptionsを以下の様に修正。
      Options Indexes Includes ExecCGI FollowSymLinks MultiViews
       
      #AddHandler cgi-script .cgiAddHandler cgi-script .cgi .pl .rb
       
      #Include conf/extra/httpd-languages.confInclude conf/extra/httpd-languages.conf
       
      #Include conf/extra/httpd-default.confInclude conf/extra/httpd-default.conf
    • Apache起動
      $ /opt/local/apache2/bin/apachectl configtest
      $ sudo /opt/local/apache2/bin/apachectl graceful
      
  2. MySQLをインストール
    • インストール
      $ sudo port install mysql5 +innodb_plugin
      $ sudo port install mysql5-server
      
    • 初期化
      $ sudo -u mysql mysql_install_db5
    • MySQL起動
      $ sudo /opt/local/share/mysql5/mysql/mysql.server start
    • 自動起動設定
      $ sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist
    • MySQLのrootアカウントへパスワードを設定
      $ /opt/local/lib/mysql5/bin/mysqladmin -u root password '******'
      $ mysql -u root -p
      mysql> select user,host,password from mysql.user;
      mysql> set password for root@'bubbkis-MacBook.llocal'=password('パスワード');
      mysql> set password for root@'127.0.0.1'=password('パスワード');
      mysql> exit
      
    • MySQL設定ファイル編集
      $ sudo cp /opt/local/share/mysql5/mysql/my-medium.cnf /opt/local/etc/mysql5/my.cnf
      $ sudo vi /opt/local/etc/mysql5/my.cnf
      
      ##[mysqld]の項目へ追加
      character-set-server = utf8
      collation-server = utf8_unicode_ci
      init-connect = 'SET NAMES utf8'
      skip-character-set-client-handshake
      
      ##[mysqldump]の項目へ追加
      default-character-set = utf8
      
      ##[mysql]の項目へ追加
      default-character-set = utf8
      
    • MySQL再起動
      $ sudo /opt/local/share/mysql5/mysql/mysql.server restart
  3. PostgreSQLをインストール(2009/12/01現在、phpがpostgresql83までしか対応してない)
    • インストール
      $ sudo port install postgresql83 +perl +python
      $ sudo port install postgresql83-server
      
    • 自動起動設定
      $ sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql83-server.plist
    • 初期化
      $ sudo mkdir -p /opt/local/var/db/postgresql83/defaultdb
      $ sudo chown postgres:postgres /opt/local/var/db/postgresql83/defaultdb
      $ sudo su postgres -c '/opt/local/lib/postgresql83/bin/initdb -D /opt/local/var/db/postgresql83/defaultdb'
      
    • PostgreSQL起動
      $ sudo su postgres -c '/opt/local/lib/postgresql83/bin/postgres -D /opt/local/var/db/postgresql83/defaultdb'
      or
      $ sudo su postgres -c '/opt/local/lib/postgresql83/bin/pg_ctl -D /opt/local/var/db/postgresql83/defaultdb start'
      
    • PL/pgSQL && dblinkをインストール
      $ sudo su postgres
      sh-3.2$ createdb testdb
      sh-3.2$ /opt/local/lib/postgresql83/bin/createlang plpgsql testdb
      sh-3.2$ psql -U postgres -d testdb < /opt/local/var/macports/software/postgresql83/8.3.8_1/opt/local/share/postgresql83/contrib/dblink.sql
      

      インストール後、これらを使いたい場合は「testdb」をテンプレートDBとして新規DBを作成し使う。

    • postgresアカウントへパスワードを設定
      sh-3.2$ psql template1
      template1=# alter user postgres with password '******';
      template1=# \q
      
    • 一般ユーザへのデータベース作成権限設定
      sh-3.2$ createuser -AdPE bubbkis
      sh-3.2$ exit
      
    • PostgreSQL設定ファイル編集
      postgresql.confを編集。

      $ sudo vi /opt/local/var/db/postgresql83/defaultdb/postgresql.conf
      #listen_addresses = 'localhost'
      ↓
      listen_addresses = '*'
      

      pg_hba.confを編集

      $ sudo vi /opt/local/var/db/postgresql83/defaultdb/pg_hba.conf
      #追記
      host    all         all       0.0.0.0    0.0.0.0      password
      
    • PostgreSQL再起動
      $ sudo su postgres -c '/opt/local/lib/postgresql83/bin/pg_ctl -D /opt/local/var/db/postgresql83/defaultdb restart'
  4. PHPをインストール
    • いろいろインストール
      $ sudo port install php5 +apache2 +mysql5 +pear +postgresql83 +sqlite
      $ sudo port install php5-curl
      $ sudo port install php5-exif
      $ sudo port install php5-gd
      $ sudo port install php5-gettext
      $ sudo port install php5-imagick
      $ sudo port install php5-mbstring
      $ sudo port install php5-mcrypt
      $ sudo port install php5-mysql
      $ sudo port install php5-postgresql  +postgresql83
      $ sudo port install php5-readline
      $ sudo port install php5-sqlite
      $ sudo port install php5-sqlite3
      $ sudo port install php5-xmlrpc
      $ sudo port install php5-zip
      $ sudo port install php5-zlib
      $ sudo pear upgrade PEAR
      
    • ApacheへPHPモジュールを読み込ませる
      $ cd /opt/local/apache2/modules
      $ sudo /opt/local/apache2/bin/apxs -a -e -n "php5" libphp5.so
      
    • PHP設定ファイル編集
          $ sudo cp /opt/local/etc/php5/php.ini-development /opt/local/etc/php5/php.ini
      or
          $ sudo cp /opt/local/etc/php5/php.ini-production /opt/local/etc/php5/php.ini
      $ sudo vi /opt/local/etc/php5/php.ini
      
      max_execution_time = 30
      ↓
      max_execution_time = 0
      
      post_max_size = 8M
      ↓
      post_max_size = 64M
      
      upload_max_filesize = 2M
      ↓
      upload_max_filesize = 64M
      
      ;date.timezone =
      ↓
      date.timezone = Asia/Tokyo
      
      mysql.default_socket =
      ↓
      mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
      
      mysqli.default_socket =
      ↓
      mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock
      
      pdo_mysql.default_socket =
      ↓
      pdo_mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
      
    • Apache設定ファイル編集
      $ sudo vi /opt/local/apache2/conf/httpd.conf
      # 追記
      Include conf/extra/mod_php.conf
      
    • Apache再起動
      $ sudo /opt/local/apache2/bin/apachectl restart

このインストールしたPHPはバージョンが5.3なんで注意。MacPortsにまだ5.2系が残ってたけど、モジュール類が5.3対応となってたんで5.2系はインストールしませんでした。
ただこれまで5.2系で開発してたんで5.3にバージョン上げると動きませんorz
5.3系の環境も欲しかったのでMacPortsは5.3な環境。
5.2系の環境も必須なんでVMwareFusionにCentOSなりDebianなりをインストールして環境を作ることにしました。

[CentOS]CentOS5の「PHP、MySQL、PostgreSQL」のバージョンをYumでアップデートする。

なんかサーバーを弄ってたら、PHPとかMySQLとかPostgresのバージョンを無性に上げたくなってきたからバージョンアップした。全部、自前でbuildなんてやってられんので全てYumで管理します。
CentOSのリポジトリのPHPなんて5.1.6とかPostgresが8.1とか・・・ねぇ?って感じだったのでつい・・・
ということでインストールメモ開始。このブログ、インストールメモ専門になってきたな・・・

  1. まず標準のCentOSのリポジトリからPHP、MySQL、PostgreSQLを除外する.。
    # vi /etc/yum.repos.d/CentOS-Base.repo
    [base] ## [base]の項目に↓を追加
    exclude=postgresql* php* mysql*
    [updates] ## [updates]の項目にも↓を追加
    exclude=postgresql* php* mysql*
    
  2. PHPとMySQLをアップデートする用にまずリポジトリ追加。
    # rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
    # vi /etc/yum.repos.d/utterramblings.repo ## ←のファイル作って以下の内容で保存。
    [utterramblings]
    name=Jason's Utter Ramblings Repo
    baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
    
  3. PostgreSQLをアップデートする用にやっぱりまずはリポジトリ追加。
    # wget http://yum.pgsqlrpms.org/reporpms/8.3/pgdg-centos-8.3-5.noarch.rpm
    # rpm -ivh pgdg-centos-8.3-5.noarch.rpm
    
  4. PHPとMySQLとPostgreSQLをアップデート。
    # yum update
    
    • ※ x86_64な環境の人で、既にMySQLをインストールしている人は一度削除してからインストールしなおしてください。(mysql、mysql-devel、mysql-server)
      # yum -y remove mysql mysql-devel mysql-server
      # yum -y install mysql mysql-devel mysql-server
      
    • ※ 既にPostgreSQLをインストール済の人で「古いバージョンの〜〜〜アップグレードする必要があります。」と言われた場合
      1. dataを削除、またはリネーム
        # mv /var/lib/pgsql/data /var/lib/pgsql/data.old
      2. DB初期化
        # /etc/init.d/postgresql initdb
      3. PostgreSQL再起動
        # /etc/init.d/postgresql restart
  5. リポジトリ追加したらyumでXcacheとかPostGISがインストールできるようになってたからインストールした。
    # yum -y install php-xcache postgis

各設定は以下を参考に。Ubuntu用に書いたけどほとんどいっしょなので。

[PHP]CentOSへXCacheをインストールしたメモ。[XCache]

またインストールメモ。今後、サーバーを作る時用の自分用メモばっか書いてますな、最近。
ということで、CentOS5.2XCacheをインストールしました。

  1. phpizeの為に、php-deveをインストール。
    # yum -y install php-devel
  2. Xcacheの取得 && インストール。
    # cd /usr/local/src
    # wget http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz
    # tar zxvf xcache-1.2.2.tar.gz
    # cd xcache-1.2.2
    # phpize
    # ./configure --enable-xcache --enable-xcache-coverager
    # make
    # make test
    # make install
    

    インストール後、表示されるパスをメモしておく。↓みたいな。

    Installing shared extensions: /usr/lib64/php/modules/
    
  3. XCacheのWebインタフェースを公開ディレクトリへコピー。
    # cp -R admin /var/www/html/
    # cp -R coverager /var/www/html/
    # mv /var/www/html/admin /var/www/html/xcache
    
  4. XCacheの設定。
    # mkdir /tmp/pcov
    # chown apache.apache /tmp/pcov ##←Apache実行ユーザーへ
    # cat xcache.ini >> /etc/php.ini
    # cat /proc/cpuinfo | grep -c processor ##←表示された数値をメモ。
    # echo "< ?php echo md5('pass'); ?>" | php ##←表示された文字列をメモ。
    # vi /etc/php.ini
    

    以下、/etc/php.ini のXCache設定内容。

    • zend_extension = インストール後表示されたパスを指定。
    • xcache.count = # cat /proc/cpuinfo | grep -c processor で表示された数値。
    • xcache.admin.user = “hoge” # 適当なユーザーを指定。
    • xcache.admin.pass = # echo “< ?php echo md5('pass'); ?>” | php で表示された文字列。
    [xcache-common]
    ;; install as zend extension (recommended), normally "$extension_dir/xcache.so"
    ;zend_extension = /usr/local/lib/php/extensions/non-debug-non-zts-xxx/xcache.so
    zend_extension = /usr/lib64/php/modules/xcache.so
    ; zend_extension_ts = /usr/local/lib/php/extensions/non-debug-zts-xxx/xcache.so
    ;; For windows users, replace xcache.so with php_xcache.dll
    ;zend_extension_ts = c:/php/extensions/php_xcache.dll
    ;; or install as extension, make sure your extension_dir setting is correct
    ; extension = xcache.so
    ;; or win32:
    ; extension = php_xcache.dll
    
    [xcache.admin]
    xcache.admin.enable_auth = On
    xcache.admin.user = "hoge"
    ; xcache.admin.pass = md5($your_password)
    xcache.admin.pass = "******************************"
    
    [xcache]
    ; ini only settings, all the values here is default unless explained
    
    ; select low level shm/allocator scheme implemenation
    xcache.shm_scheme =        "mmap"
    ; to disable: xcache.size=0
    ; to enable : xcache.size=64M etc (any size > 0) and your system mmap allows
    xcache.size  =                64M
    ; set to cpu count (cat /proc/cpuinfo |grep -c processor)
    xcache.count =                 1
    ; just a hash hints, you can always store count(items) > slots
    xcache.slots =                8K
    ; ttl of the cache item, 0=forever
    xcache.ttl   =                 0
    ; interval of gc scanning expired items, 0=no scan, other values is in seconds
    xcache.gc_interval =           0
    
    ; same as aboves but for variable cache
    xcache.var_size  =            8M
    xcache.var_count =             1
    xcache.var_slots =            8K
    ; default ttl
    xcache.var_ttl   =           600
    xcache.var_maxttl   =       3600
    xcache.var_gc_interval =     300
    
    xcache.test =                Off
    ; N/A for /dev/zero
    xcache.readonly_protection = Off
    ; for *nix, xcache.mmap_path is a file path, not directory.
    ; Use something like "/tmp/xcache" if you want to turn on ReadonlyProtection
    ; 2 group of php won't share the same /tmp/xcache
    ; for win32, xcache.mmap_path=anonymous map name, not file path
    xcache.mmap_path =    "/tmp/xcache"
    
    ; leave it blank(disabled) or "/tmp/phpcore/"
    ; make sure it's writable by php (without checking open_basedir)
    xcache.coredump_directory =   ""
    
    ; per request settings
    xcache.cacher =               On
    xcache.stat   =               On
    xcache.optimizer =           Off
    
    [xcache.coverager]
    ; per request settings
    ; enable coverage data collecting for xcache.coveragedump_directory and xcache_coverager_start/stop/get/clean() functions (will hurt executing performance)
    xcache.coverager =          On
    
    ; ini only settings
    ; make sure it's readable (care open_basedir) by coverage viewer script
    ; requires xcache.coverager=On
    xcache.coveragedump_directory = "/tmp/pcov"
    
  5. Apacheを再起動。
    # /etc/rc.d/init.d/httpd restart
  6. /var/www/html/coveragerディレクトリへ.htaccessを設置。↓内容。
    AuthUserFile /etc/httpd/conf/.htpasswd
    AuthGroupFile /dev/null
    AuthName "XCache Coverage Viewer"
    AuthType Basic
    #require valid-user
    require user hoge
    

以上。

[cakephp]FormHelperから自動出力されるdiv要素を消す方法。

div要素を外したい場合には

$form->submit('登録', array('div'=>false));
$form->input("User/name", array("type"=>"text", "label"=>false, "div"=>false));

こんな感じ。

CakePHP の findAll の条件に IN 演算子を使うには

CakePHP の findAll の条件に IN 演算子を使うには

$this->model->findAll(array('field IN (1,2,3)'));

または、

$params = array(1,2,3);
$this->model->findAll(array('field' => $params));

Home > Tags > PHP

Search
Feeds
Meta

Return to page top