ECcube2.11.0でFatal error:Call to undefined function imageCreateFromJpeg()と言うエラーがでた場合
環境
- さくらVPSの標準OS Centos5.5 64bit版
- php5.2.17
原因
phpのライブラリで画像関連の関数が入っているgdってライブラリがあるんだけど、そのライブラリの中のImageCreateFromJpeg()って言う関数が使えないよーふえーんって言うのが原因。
対処法
jpegのライブラリを入れる
yum install libjpeg libjpeg-devel
以下のconfigureオプションを付けてphpを再コンパイルする
--with-jpeg-dir=/usr/lib --with-libdir=lib64
Apache再起動して反映
service httpd restart
ECcubeの管理画面で、システム設定>システム情報を確認して
JPG Support enabled
になっているのを確認。
参考リンク
http://q.hatena.ne.jp/1178967037
http://tonby.sakura.ne.jp/?p=193
オープンソースECサイト構築ソフトEC-CUBE【Ver2.4.0対応】公式ガイドブック カスタマイズ編
- 作者: オレンジ岸本,エスキュービズム,福田博一
- 出版社/メーカー: 秀和システム
- 発売日: 2009/07/29
- メディア: 単行本
- 購入: 5人 クリック: 118回
- この商品を含むブログ (7件) を見る
【さくらVPSで運用 CentOs5.5】APC編
PECL (the PHP Extension Community Library)
C言語で書かれたPHP用拡張モジュールライブラリ。
登録されている拡張モジュールをネットワーク経由でインストールしたり出来ます。
あ、そういうもんだったのね。
PHPのモジュール入れるのに便利なやつってことで覚えておこうっと。
インストール
次に、APCインストールに必要なやつをインストール。入れないとエラーで怒られる。
# sudo yum -y install php-devel
php-devel パッケージには PHP 拡張を構築するために必要なファイルが含ま れています。もし独自の PHP 拡張をコンパイルするならこのパッケージをイ ンストールする必要があります。
http://penguin.triumf.ca/comps/9/ja_frames/rpms/php-devel.phpここではphpizeを使うのに必要ぽい。
GNU が作成している C/C++ コンパイラ。FreeBSD、Linux などは標準の C コンパイラが gcc になっている (ccとgccはハードリンクされている)。Solaris など商用マシンでも gcc の重要度は高く、OS 標準のコンパイラではコンパイルできず、gcc を使わないといけないソフトウェアも多い。
http://x68000.q-e-d.net/~68user/unix/pickup?gcc
# sudo yum -y install httpd-devel
apxsコマンドを使うためのやつ。
apxsはapacheの追加でモジュール拡張する時に便利なやつらしい。
http://d.hatena.ne.jp/shimooka/20081006/1223281545
意味が理解できたら、次からはこれ一発でおk
やっとAPCのインストール
なんかエラーでた。
PEAR::raiseErro() in /usr/share/pear/PEAR/REST.php on line 165
えー。そんなのありかよ。
sudo vi /usr/share/pear/PEAR/REST.php
×raiseErro()
〇raiseError()に直してあげる。
本来なら、ここで pecl install apc でわーいってなると思うんだけどなぜかエラーを吐く。
仕方ないので、手動インストールに切り替えた。
# svn checkout http://svn.php.net/repository/pecl/apc/trunk apc
# cd apc
# phpize
# ./configure
# make
# sudo make install
# sudo vi /etc/php.ini
ECcube構築メモ インストール編
バージョン選定
2011/04/06時点での最新バージョンは、2011年3月23日にでたVersion 2.11.0でどうもすごく軽くなってスマートフォンにも対応しているらしい。
が、モジュールがまだ全然ないのとどうせバグがいっぱい出てくるんだろうと踏んで前の正式版2.4.4を入れることにした。
ECcube用のサーバー設定
アプリケーション
インストール後に、ECcube管理で確認した表示。
mysql> GRANT ALL PRIVILEGES ON eccube_db.* TO eccube_db_user@localhost IDENTIFIED BY ' ********';
全権限を与えた「eccube_db_user」ってユーザーを作りまっせと言う意味。多分。
-
-
- 権限を反映させる
-
mysql> FLUSH PRIVILEGES;
エラーでたよね?知ってる。この対処法はこちら
-
-
- データベースの作成
-
mysql> CREATE DATABASE eccube_db
- WEBサーバ
Options FollowSymLinks
AllowOverride All
# sudo vi /etc/php.ini
mbstring.language = Japanese
auto_detect_line_endings = on
output_handler = mb_output_handler
mbstring.internal_encoding = UTF-8
mbstring.encoding_translation = on
mbstring.detect_order = auto
mbstring.substitute_character = none
magic_quotes_gpc off
-
-
- Apacheを再起動して設定を反映させる。
-
# sudo service httpd restart
- GD
- Loaded
パーミッションの変更
インストール時にいろいろ怒られるので権限を与えとく。
# sudo chmod 属性値 -R ディレクトリ
data/install.php ……(属性:666)
インストール設定情報が書き込まれます
html/user_data ……(属性:777)
フロント画面のテンプレート等が保存されます
html/cp ……(属性:777)
html/upload ……(属性:777)
管理画面からアップロードした画像等が保存されます
data/cache ……(属性:777)
data/class ……(属性:777)
data/Smarty ……(属性:777)
Smartyテンプレートのコンパイル後のファイルが保存されます
data/downlaods/update ……(属性:777)
アップデート機能でダウンロードしたファイルが保存されます
data/downloads ……(属性:777)
data/logs ……(属性:777)
参考リンク
オープンソースECサイト構築ソフトEC-CUBE【Ver2.4.0対応】公式ガイドブック カスタマイズ編
- 作者: オレンジ岸本,エスキュービズム,福田博一
- 出版社/メーカー: 秀和システム
- 発売日: 2009/07/29
- メディア: 単行本
- 購入: 5人 クリック: 118回
- この商品を含むブログ (7件) を見る
【さくらVPSで運用 CentOs5.5】mysql編
※サーバー運用の素人の個人メモなので、あんまり参考にしない方がいいかも。
mysqlインストール
rpm -qa mysql-server
入ってるか確認するsudo yum -y install mysql-server
入ってなければインストール
cd $HOME
cp /etc/my.cnf .
sudo vi /etc/my.cnf
my.cnfの編集(文字コードの設定)
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
■追加部分
# character-set
default-character-set=utf8
skip-character-set-client-handshake
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
■追加部分
[client]
default-character-set=utf8
■追加部分
[mysql]
default-character-set=utf8
■追加部分
[mysqldump]
default-character-set=utf8
chkconfig --list mysqld
自動起動になっているか確認
sudo chkconfig mysqld on
なっていなければ設定sudo /etc/rc.d/init.d/mysqld start
mysqlを起動sudo mysqladmin -u root password 'パスワード'
パスワードの設定use mysql
DELETE FROM user WHERE user = '' OR ( user = 'root' AND host != 'localhost' )
mysqlデータベースから、不要なユーザーの削除DROP DATABASE test
不要なデータベースの削除
ユーザーを作る
GRANT ALL PRIVILEGES ON DB名.* TO ユーザー名@localhost IDENTIFIED BY 'パスワード';
FLUSH PRIVILEGES;
FLUSH PRIVILEGES;
で
ERROR 1146 (42S02): Table 'mysql.servers' doesn't exist
ってエラーがでると思う。
そしたら、このテーブルを作ってやれば解決。
CREATE TABLE `servers` (
`Server_name` char(64) NOT NULL,
`Host` char(64) NOT NULL,
`Db` char(64) NOT NULL,
`Username` char(64) NOT NULL,
`Password` char(64) NOT NULL,
`Port` int(4) DEFAULT NULL,
`Socket` char(64) DEFAULT NULL,
`Wrapper` char(64) NOT NULL,
`Owner` char(64) NOT NULL,
PRIMARY KEY (`Server_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='MySQL Foreign Servers table';
なんで、ないのかはよく分からん。
【さくらVPSで運用 CentOs5.5】apache編
※サーバー運用の素人の個人メモなので、あんまり参考にしない方がいいかも。
apacheインストール
# rpm -qa httpd
インストールされているか確認# sudo yum -y install httpd
インストール# rpm -qa httpd
# httpd -v
バージョン確認httpd.confの編集
# sudo cp /etc/httpd/conf/httpd.conf $HOME
コピーを取っておく# sudo vi /etc/httpd/conf/httpd.conf
ディレクトリにアクセスした際に、ファイル一覧が生成され無い様に変更
Options Indexes FollowSymLinks
↓
Options FollowSymLinks
最低限の情報しか与えない様に変更
ServerTokens Prod
ServerSignature Off# sudo apachectl configtest
起動テスト# sudo service httpd start
アパッチ起動
バーチャルホストの設定
DocumentRoot /var/www/html
ServerName yourdomain.com
DocumentRoot /var/www/html2
ServerName test.yourdomain.com
例えばこんな感じでバーチャルホストを設定したとする。
# sudo service httpd configtest
ドン
[warn] _default_ VirtualHost overlap on port 80, the first has precedence
こんなエラーがでたら
NameVirtualHost *:80
こいつがコメントアウトされている可能性が高い
ログローテーションの設定
エラーログや、アクセスログの容量が2Gを超えるとアパッチは起動を停止してしまう。
これを期間を決めて自動で削除するように設定する。