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

moodleのアップデートメモ

標準

ゼミで使用しているmoodleのバージョンがだいぶ古いため、アップデート挑戦

(なにしろHTMLエディタが出現しなくなってしまったので、仕方なく……)

1.現在のバージョンの確認

管理者でログインし、左側のサイト管理メニューから  ► サーバ► 動作環境で確認する)
現在 version 1.9.5+  (サイトだと、安定板1.9の最新は1.9.19+と出ているが)
mysql 4.1.16以上が必須 現在 5.5.32
php 4.3.0以上が必須  現在 5.4.17

2.2014年2月18日現在の最新版 http://download.moodle.org/

Moodle 2.6.1+ (PHP5.3.3以上、MySQL5.1.33以上)

3.バージョンアップは実験用のコピーで試したほうがいいとのことなので

現在運用中のmoodleをそっくりフォルダごとコピーして、別名で保存し、アクセスできるかどうか確認する(OK)

4.まずMoodle2.2にアップグレードする

(Moodle 2.2またはそれ以降のバージョンからのみ、Moodle 2.4にアップグレードすることができるというという注意書きある)

5.データをバックアップする

アップグレード前にバックアップすべき対象が3つあります:

  1. Moodleソフトウェア (例: サーバ/htdocs/moodle内のすべて) OK
  2. Moodleにアップロードされたファイル (例: サーバ/moodledata) OK
  3. Moodleデータベース (例: MySQLまたはPostgresデータベース) OK
    cd /my/backup/directory
    mv moodle-database.sql.gz moodle-database-old.sql.gz
    mysqldump -h example.com -u myusername --password=mypassword -C -Q -e --create-options mydatabasename > moodle-database.sql
    gzip moodle-database.sql
    
    ※データベースバックアップには、phpMyAdminを使ったほうがいいかもしれない
    http://www.phpmyadmin.net/
  4. ここでは、結局上記のmysqldumpを試した。
    mysqldump -h cat.tama.ac.jp -u (moodleユーザ) –password=(moodleパスワード) -C -Q -e –create-options (moodle データベース名)>moodle-database.sql
    いずれも、( )内は、moodleのconfig.phpに記述されているので、忘れていてもダイジョウブ。ちなみに、バックアップデータのリストアもメモ
    「あなたがMySQLを実行している場合、MySQLサーバで新しく作成したデータベースにSQLファイルをインポートします。いくつかのバックアップでは、Moodleが動作している同じデータベースに対して、インポートを試みますので、注意してください。これは、インストール済みMoodleにダメージを与えるデータベース問題を発生させる可能性があります。これをするための最良の方法は、新しいデータベースを作成して、その中にバックアップされたデータベースをリストアすることです。そして、Moodle設定ファイル「config.php」を修正して、新しいデータベースに接続するようにします (これにより、オリジナルのデータベースを保持することができます)。あなたが新しいデータベースを作成した後、次のコマンドを実行します:

    mysql -p new_database < moodlesqlfile.sql
    」

6.新しいmoodleをダウンロードしてサーバにセットアップする ※1.9からは一度2.2にあげるようにメッセージが出た

最新版(2014年2月20日現在)v2.6.1+            moodle-latest-26.tgz をダウンロード
※zip版を使うと、文字コードがshiftJISになっているので、変換が面倒(unixサーバにインストールする場合)

tar xvzf moodle-2.4.tgz
独自モジュールなどを使っていない場合は、config.phpのみを古いmoodleフォルダからコピーしてくればOK

==================

一度アップデートをしてみると、意外に簡単!

その後、HTMLエディタが表示されない理由は、各自のプロフィルで、テキストエディタを選択するところがプレーンテキストになっていたためと判明。
念のため、アドミンでも、HTMLエディタをtinumce以外を非設定にしておいたほうがいい。

広告

XAMPP

標準

MacにXAMPPをいれましょう

http://www.apachefriends.org/jp/xampp-macosx.html

2013/7/20現在 XAMPP for MacOS X 1.8.2

====

セキュリティが心配なら、それぞれにパスワードをもうけておくといい。

ターミナルで、sudo に続けて、以下のラインを入力する

/Applications/XAMPP/xamppfiles/xampp security

(xamppにパスワードがつく。userは xampp を使うよう、指示がでる)
====
/Applications/XAMPP/xamppfiles/xampp の機能あれこれ
start
XAMPPを起動する
stop
XAMPPを停止する
restart
XAMPPを停止して起動する
reload
Apache, MySQLと、ProFTPD(起動している場合)の config file をリロードする
startapache
Apacheのみを起動する
startssl
Apache SSL サポートを起動する。このコマンドはSSLサポートを常時アクティブにします。 例)次回XAMPPを再起動したときにもSSLはアクティブな状態です。
startmysql
MySQLデータベースのみ起動されます。
startftp
ProFTPDサーバのみ起動されます。FTP経由で、Webサーバにファイルをアップロードできます(ユーザ「nobody」、パスワード「xampp」)。このコマンドはProFTPDを常時アクティブにします。 例)次回XAMPPを再起動したときにもProFTPDはアクティブな状態です。
stopapache
Apacheを停止します。
stopssl
ApacheのSSLサポートを停止します。このコマンドはSSLサポートを常時停止にします。  例)次回XAMPPを再起動したときにもSSLはオフのままです。
stopmysql
MySQLデータベースを停止します
stopftp
ProFTPDサーバを停止します。このコマンドはProFTPDを常時オフにします。  例) 次回XAMPPを再起動したときにもFTPはオフのままです。
reloadapache
Apache Webサーバのconfigファイルをリロードします。
reloadmysql
MySQLデータベースのconfigファイルをリロードします。
reloadftp
ProFTPDのconfigファイルをリロードします。
例)SSL をアクティブにしてApacheを起動したい場合、以下のコマンド(rootとして)を入力するだけです。

sudo /Applications/XAMPP/xamppfiles/xampp startssl

これで、SSL経由でhttps://localhostの下のApacheサーバにもアクセスできます。

PHP基礎からメモ

標準

http://www.php.net/manual/ja/getting-started.phpで学ぶ

====

PHPのHello World!〜hello.phpなどで保存(エンコードUTF-8で)

<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo ‘<p>Hello World</p>’; ?>
</body>
</html>

===

php環境情報を出す

<?php phpinfo(); ?>

===

定義済み変数を使う

$_SERVER  WEBサーバー関連情報をすべて記憶する配列(特別予約変数)

<?php
echo $_SERVER[‘HTTP_USER_AGENT’];
?>

===

if文を使う

<?php
if (strpos($_SERVER[‘HTTP_USER_AGENT’], ‘MSIE’) !== false) {
echo ‘あなたはInternet Explorerを使用しています<br />’;
}
?>

strpos() ~文字列を探す結果はtrueかfalseで返す

===

<?php
if (strpos($_SERVER[‘HTTP_USER_AGENT’], ‘MSIE’) !== false) {
echo ‘あなたはInternet Explorerを使用しています<br />’;
}else{
echo ‘あなたのブラウザはMSIEではありません<br />’;
}
?>

===

HTMLモードとPHPモードの混在

<?php
if (strpos($_SERVER[‘HTTP_USER_AGENT’], ‘MSIE’) !== false) {
?>
<h3>strposが非falseを返しました</h3>
<center><b>あなたはInternet Explorerを使用しています</b></center>
<?php
} else {
?>
<h3>strposがfalseを返しました</h3>
<center><b>あなたはInternet Explorerを使用していません</b></center>
<?php
}
?>

===

フォームの処理

フォームから来るデータは、$_POSTにすべて入ってくる

HTML フォーム

<form action="action.php" method="post">
 名前: <input type="text" name="name" />
 年齢: <input type="text" name="age" />
 <input type="submit" />
</form>

受け側のaction.phpは、
こんにちは、<?php echo htmlspecialchars($_POST['name']); ?>さん。
あなたは、<?php echo (int)$_POST['age']; ?> 歳です。

※htmlspecialchars()〜HTMLで動くタブを無効にする
※ 数字とわかっているので、 (int) ~整数とした

さらに、参考
<html>
<head>
<meta charset="UTF-8" />
<title>sample</title>
</head>
<body>
<table border="1">
  <tr>
    <td>名前</td><td><?php echo htmlspecialchars($_POST["name"], ENT_QUOTES) ?></td>
  </tr>
  <tr>
    <td>メールアドレス</td><td><?php echo htmlspecialchars($_POST["mail"], ENT_QUOTES) ?></td>
  </tr>
  <tr>
    <td>コメント</td><td><?php echo nl2br(htmlspecialchars($_POST["comment"], ENT_QUOTES)) ?></td>
  </tr>
</table>
</body>
</html>
===