カテゴリー別アーカイブ: PHP

OpenPne3インストール時のCouldn’t locate driver named mysql対応

OpenPne3をインストールしているのですが、Couldn’t locate driver named mysqlと出てインストール出来ません。

php-mysqlが入っていないからだろうと思い、yum install php-mysqlとしたのですが、

The program package-cleanup is found in the yum-utils package.

と出て、うまく行かず。下記コマンドで確認するとインストール済み。

yum list | grep php-pdo
yum list | grep php-mysql

一旦PHP関係をyum removeでアンインストールして順番にインストール。updateしたのだけれど依存が消えなかったので。

yum install php
yum install php-common
yum install php-mbstring
yum install php-gd
yum install php-mcrypt
yum install php-mysql

php-mysqlでPODも一緒にインストールされる。/etc/init.d/httpd stopとstartでhttpdをリスタート。

phpinfo();でPODとMySQLを確認。OK。

./symfony openpne:install

で再度OpnePneをインストール、おぉー進んだ。なんかコンソールに色がついた。次のエラーは

Fatal error: Call to undefined function sys_get_temp_dir()

なに、関数が存在しないだと。PHP5.2.3以降・・・yumでのPHPは5.1.6、がっくり。ソースからコンパイルかぁ、2000年前後の時代でもあるまいしまったく。
ということで、もう一度アンインストールして、リポジトリ変えて挑戦。

cd /etc/yum.repos.d
wget http://dev.centos.org/centos/5/CentOS-Testing.repo

ダウンロードした、CentOS-Testing.repoに

priority=1

を追加。

yum --enablerepo=c5-testing update php

でphpをアップデート。httpdを再起動。あれ、phpinfo()で確認しても5.1.6のまま。うーんPHP削除。

yum remove php
yum remove php-common

削除してから

rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

して、vi /etc/yum.repos.d/utterramblings.repo

[utter]
name=Jason’s Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=0
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

として

yum --enablerepo=utter -y install php
yum --enablerepo=utter -y install php-mysql
yum --enablerepo=utter -y install php-mcrypt
yum --enablerepo=utter -y install php-mbstring
yum --enablerepo=utter -y install php-devel

でhttpdを再起動。どうだ、5.2.17になった。じゃもう一度OpenPneをインストールと。次は

Fatal error: Allowed memory size of 33554432 bytes exhausted

だとー。メモリサイズか。これはphp.iniをいじればよさそう。

vi /etc/php.ini
で、
memory_limit = 32M

memory_limit = 48M
に変更。またまたhttpdを再起動。気を取り直して

./symfony openpne:install

さっ、次のエラーは

PDO Connection Error: SQLSTATE[HY000] [2013] Lost connection to MySQL server at 'reading initial communication packet', system error: 111

ソケット周りか。ということはまたphp.iniですな。
vi /etc/php.ini
で、

pdo_mysql.default_socket=/tmp/mysql.sock

を適当なところに追加。httpdを再起動

さて、./symfony openpne:installでインストール。さっ、これでOKでしょう。

Fatal error: Allowed memory size of 50331648 bytes exhausted

とほほ。増えてんじゃん。えーい、vi /etc/php.ini

memory_limit = -1

で上限なしにしてやるー。

やったーインストール完了。こっからどうするのか。

./symfony project:clear-controllers

で開発用環境ファイル?を削除。

cd ./web
vi .htaccess

RewriteBase /sns/
のコメントを外して、OpenPneのパスを決める。OpenPNE3/webを公開フォルダーのsnsでシンボリックリンクを張る。

http://your.url/sns/
でアクセス。

おーとりあえず画面が出たよー。IDとパスワードは何???
sns@example.com
password
でログイン。あれれ、404。

じゃ管理画面は
http://your.url/sns/pc_backend.php
admin
password

こっちは動くな。.htaccess関係かな。なおらん。えーい、ドキュメントルートを変えちゃえ。
vi /etc/httpd/conf/httpd.conf

DocumentRoot "/var/www/html/OpenPNE3/web"

にして

<Directory /var/www/html/OpenPNE3/web>
    Options FollowSymLinks
    AllowOverride All
</Directory>

にする。で、.htaccessを再度編集/でアクセスするようにしよう。

RewriteBase /

んで、httpdを再起動して、
http://your.url/
でアクセス。

おー動いたよ。

CodeIgniterでのCron処理

1.x系はCron_job_bootstrapperを使うと良いみたい。

https://github.com/EllisLab/CodeIgniter/wiki/Cron-job-bootstrapper

からコピーしてスクリプト(cron.php)を作成する。保存するときはUTF-8、改行コードはLFにする。CLIで動かすので、#!/usr/bin/phpは削除する。サーバーの適当なとところに配置し、

chmod 755 cron.php

にて実行権限を与える。

cron.phpの中に書かれている定義を自分の環境にあわせて変更する。

define('CRON_CI_INDEX', '/var/www/vhosts/intranet/index.php');

実行してみる。

php cron.php

で次のように出ればとりあえずOK。

Usage: cron.php --run=/controller/method [--show-output][-S] [--log-file=logfile] [--time-limit=N] [--server=http_server_name]

後は

php cron.php --run=/コントローラー名/メソッド名

でOK。