phpmyadminにログインできない

phpmyadminにログインできない

ログインすると以下の画面

mysql_error

Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.

session_write_close(): write failed: No space left on device (28)

session_write_close(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session)

セッション開始中にエラーが発生しました。 PHPやWebサーバーのログファイルをチェックして、PHPのインストールを正しく設定してください。また、ブラウザでクッキーが有効になっていることを確認してください。

ターミナルから実行
--------------------------------
df -h コマンドを実行する。
--------------------------------

tarminal

ファイル容量がいっぱいなので不要なファイルを削除する

参考サイト

https://qiita.com/myzkyy/items/53e985cf028e3c3edfe5

stripe & phpで定額決済を導入

1.stripe のダッシュボードで定額商品を作成。ここで作られる プランid がスクリプトで必要になる。

プランid の他にも id がつくられるので間違えやすい。plan_ から始まるものが正解。 prod_ から始まるものは違う。

参考:
Stripe サブスクリプション実装の際に必要なidについて

2.php スクリプトを記述

//購入画面(order.html)
--------------------------------------------------
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>購入画面</title>
<!-- 購入ボタンのCSS -->
<style type="text/css">
.stripe-button-el {
width: 350px;
max-width: 100%;
}
.stripe-button-el span {
font-size: 18px;
padding-top: 15px;
min-height: 60px!important;
}
</style>
</head>

<body>
<form action="charge_subsc.php" method="POST">
<?php //data-key は公開キー ?>
<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="公開キー"
data-name="サブスクプラン"
data-description="◯◯◯◯◯◯◯"
data-locale="auto"
data-amount="400"
data-currency="jpy"
data-label="お申し込みする">
</script>
</form>
</body>
</html>
--------------------------------------------------
//購入画面からデータを投げる先(charge_subsc.php)
--------------------------------------------------
<?php
// ダウンロードしたStripeのPHPライブラリのinit.phpを読み込む
//require_once('/home/hoge/stripe-php/init.php'); //手動でダウンロードした場合は init.php になるらしい
require_once('/var/hoge/vendor/autoload.php');

// APIのシークレットキー
\Stripe\Stripe::setApiKey('秘密キー');

try
{
$customer = \Stripe\Customer::create(array(
'email' => $_POST['stripeEmail'],
'source' => $_POST['stripeToken'],
));

$subscription = \Stripe\Subscription::create(array(
'customer' => $customer->id,
'items' => array(array('plan' => '1で作ったプランのid')),
));

//データベース操作など stripe とは関係ない処理
//必要に応じてデータベースに保存する
$customer_id = $customer->id;
$subscription_id = $subscription->id;
$last4 = $customer->sources->data[0]->last4; //カード番号下四桁
$exp_month = $customer->sources->data[0]->exp_month; //カード有効月
$exp_year = $customer->sources->data[0]->exp_year; //カード有効年
$card_exp_date = $exp_month . "/" . $exp_year;

header('Location: thankyou.html');
exit;
}
catch(Exception $e)
{
// header('Location:oops.html');

echo "error:" . $e->getMessage();
error_log("unable to sign up customer:" . $_POST['stripeEmail'].
", error:" . $e->getMessage());
}
// サンキューページへリダイレクト
exit;
?>
--------------------------------------------------
これでできるはず。

ちなみにキャンセルはこれ
--------------------------------------------------
//サブスクリプションをキャンセル
$subscription = \Stripe\Subscription::retrieve($stripe_subsc_id);
$subscription->cancel();
--------------------------------------------------

メインで参考にしたページ

https://teratail.com/questions/118633

さくらvpsのwebサイトにstripeを導入

前提
php で composer が使える状態である
composer の導入はこちら

1.ComposerでStripeライブラリをインストールする

2.ファイルの設置

メインで参考にしたページ

https://qiita.com/p_s_m_t/items/a69dfbc75804fe86ad9c

ファイル内でライブラリをロードするときの注意点

ComposerでStripeライブラリをインストールした場合
-------------------------------------------------
require_once('/stripe_test/vendor/autoload.php');
-------------------------------------------------

Composerを使わず、手動でStripeライブラリをダウンロードしてサーバーに置いた場合
-------------------------------------------------
require_once('/stripe_test/stripe-php/init.php');
-------------------------------------------------
デフォルトのファイル名が違うので間違えないように

さくらVPSのphpにcomposerを導入

composer が導入されているか

 

composer が利用できないことを確認
----------------------------------------
composer --version
-bash: composer: コマンドが見つかりません
----------------------------------------

 

composer をどこのディレクトリにダウンロードしてどこにインストールするべきか確認した結果、特に決まりはなく任意のディレクトリでよさそうだ。ただ、プロジェクトだけで必要か、システム全体で使えるようにしたいのかでインストールの実行ディレクトリを決めればいいという意見も多くあった。

自分はさくらVPS の環境でグローバルで使えたほうが便利と考えたのでファイルのダウンロード先を ルートディレクトリ(/root)と決めた

 

root になってホームディレクトリ(/root)でコマンドを実行
-----------------------------------------------------------------------
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
-----------------------------------------------------------------------

すると /root に composer-setup.php がダウンロードされる

 

次のコマンドでファイルに問題がないか確認
-----------------------------------------------------------------------
php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
-----------------------------------------------------------------------
Installer verified と出たらOK

セットアップを実行
-----------------------------------------------------------------------
php composer-setup.php
-----------------------------------------------------------------------

この状態でカレントディレクトリであるルートディレクトリ(/root)を確認すると composer 関連の二つのファイルが確認できる
-----------------------------------------------------------------------
composer-setup.php composer.phar
-----------------------------------------------------------------------

composer-setup.php はもういらないので削除
-----------------------------------------------------------------------
php -r "unlink('composer-setup.php');"
-----------------------------------------------------------------------

パスを通すために composer.phar を /usr/local/bin/composer に移動
-----------------------------------------------------------------------
mv composer.phar /usr/local/bin/composer
-----------------------------------------------------------------------

composer は root で実行しないように推奨されているのでユーザーを変更。
-----------------------------------------------------------------------
su - ユーザー名
-----------------------------------------------------------------------
参考:rootユーザでcomposerコマンドを実行してはダメな理由

https://akamist.com/blog/archives/261

 

composer が利用できることを確認
--------------------------------------------------------------------------------
composer
--------------------------------------------------------------------------------

 

実際に利用するには composer.json ファイルが必要

適当なディレクトに移動、もしくは作る。自分は /var 直下に作った。

カレントディレクトリに composer.json をつくる。
-q で対話形式の入力を行わない
--------------------------------------------------
composer init -q
--------------------------------------------------

インストール参考

https://technoledge.net/composer-install-and-use/

https://laboradian.com/php-composer/

https://qiita.com/inakadegaebal/items/d370bcb1627fce2b5cd1

https://weblabo.oscasierra.net/php-composer-centos-install/

composerディレクトリ構成

http://tadasy.hateblo.jp/entry/2013/10/09/193415

【さくらのVPS】mb_send_mail でメールが送れない

php の mb_send_mail 関数で一部のメールが送れない。
yahoo メール宛てには送れるのに、独自メールが送れない。

--------------------------------------------------
環境
送信元:さくらのVPS WEBサーバーより mb_send_mail を利用
--------------------------------------------------

mb_send_mail 関数自体はエラーを吐かず、正常に終了する。

ターミナルでメールエラーを確認
--------------------------------------------------
cd /var/log/maillog
--------------------------------------------------

エラーっぽい箇所の抜粋
--------------------------------------------------
May 29 12:14:51 localhost postfix/smtp[32237]: 70ED82C028C: to=, relay=○○.sakura.ne.jp[49.212.235.97]:25, delay=0.08, delays=0.02/0/0.04/0.02, dsn=5.1.8, status=bounced (host ○○.sakura.ne.jp[49.212.235.97] said: 553 5.1.8 ... Domain of sender address apache@localhost.localdomain does not exist (in reply to MAIL FROM command))
--------------------------------------------------

検索して見つけた対処法
設定してなかった mb_send_mail 第五引数に "-fプロバイダメールアドレス" を指定。
第五引数はエラーがあった場合にメールを送信するメールアドレス。
これで送信できるようになった。

ちなみに別で契約しているもう一つのさくらVPSでは 第五引数がなくても送信できている。サーバーの設定を変えることでも問題解決できそうだ。

参考

https://okwave.jp/qa/q4822148.html

https://b-risk.jp/blog/2013/01/php_mb_send_mail/

追記
ezweb を使っている方から仮登録メールが届かないという連絡が問い合わせフォームからあった。

SPF の設定が何のが原因か?

----------------------------------------
"v=spf1 +ip4:web公開サーバーのipアドレス +mx ~all"
----------------------------------------

参考

https://qiita.com/ryounagaoka/items/931081c74b5c7a9b2bff

spfの確認

http://mxtoolbox.com/spf.aspx

追記2
gmail 宛てに送ったら迷惑メールに振り分けられたら

gmail から メールヘッダーを確認。

Received-SPF の部分が softfail になっていたらそれが原因。
ip6 対応のサーバーから送信した場合、SPF の設定に ip6 を追加する必要がある。

参考

https://www.nalabo.net/blog/2013/06/18/148

さくらのvpsにおいてphpでメールが送れない

php の mb_send_mail 関数でメールが送れない。他のサーバーでは送れるのでスクリプトのエラーではない。

ターミナルから送ろうとするとエラーが出た。

こう打つ
--------------------------------------------------------------------
[root@localhost ~]# echo "test" | /usr/sbin/sendmail -t -i ○○@yahoo.co.jp
--------------------------------------------------------------------

//↓出たエラー
--------------------------------------------------------------------
sendmail: fatal: parameter inet_interfaces: no local interface found for ::1
--------------------------------------------------------------------

↓このページのようにしたらできた。

https://qiita.com/cs_sonar/items/706a9204cba1a8e99cb1

postfix はメールを送るためのソフト。

壊れたnasのHDDからデータを取り出す

台風で停電になった後、qnap の turbo nas の動作が不安定になった。

Windows10 からアクセスしてもネットワークがすぐに途切れる。

他の PC からアクセスしても症状は変わらず。nas に外付け HDD を接続してそこにコピーしようとしてもマウントが解除される。

以上のことから nas もしくは HDD に問題がある可能性がとても高い。

とりあえず、ネットワークが切れるまでの数秒から数分の間は HDD にアクセスできるので、切断されたらまた接続を繰り返して、Windows の Cドライブにデータを移行。

また、turbo nas の電源を落として再起動すると、再起動完了時に nas 本体のディスプレイに表示される IPアドレスが、0.0.0.0 になっているのに気づく。

nas 本体に LAN 端子が二つあるので 下の端子から上の端子に LAN ケーブルをつなぎ変えると IPアドレスが正しいものに戻った。(LANケーブルを変えたこと関係があるかは不明)

途中で切れることはなくなった。

nas 本体に外付けHDDを繋げてコピーできる機能があるが、なぜか途中でエラーになる。

なので、外付けHDDを買いなおしてふたたび実行したら滞りなくできた。このときフォーマットなどはしていない。一度エラーを出したHDDだったのが原因かもしれない。エラーが出たHDDもフォーマットしたらうまくいっていたかも。

↓ raid設定のHDDからデータを取り出す方法。実行はしていないけどわかりやすい。

https://datarescue.yamafd.com/software_to_read_nas_hdd/

Let'sEncryptの更新設定

let's encrypt の導入はこちら

Let'sEncrypt の有効期限は 90日。有効期限が切れる前に自動更新するように設定する必要がある。

certbot-auto の場所を確認
--------------------------------------
find -name certbot-auto
--------------------------------------

場所はここだった
--------------------------------------
./certbot-auto
--------------------------------------

更新コマンド
--------------------------------------
sudo ./certbot-auto renew --post-hook "sudo service httpd restart"
--------------------------------------

更新期間まえだと次のように出る。有効期限も確認できる
--------------------------------------
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/example.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not yet due for renewal

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

The following certs are not due for renewal yet:
/etc/letsencrypt/live/example.com/fullchain.pem expires on 2018-10-23 (skipped)
No renewals were attempted.
No hooks were run.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--------------------------------------

強制的に更新するなら次のコマンド
--------------------------------------
sudo ./certbot-auto renew --force-renew --post-hook "sudo service httpd restart"
--------------------------------------

cronへの登録

certbot-auto の場所を調べる
--------------------------------------
find -name certbot-auto
--------------------------------------

シェルスクリプトを用意
--------------------------------------
#!/bin/sh

# #!で始まる一行目の記述はインタプリタの指定
# シェルスクリプトの最初に書くおまじない

# Let's Encrypt 証明書の更新
sudo /root/certbot-auto renew --post-hook "sudo service httpd restart"
--------------------------------------

毎週月曜日に実行
--------------------------------------
2 3 * * * /var/myshellscript/backupmysql.sh
--------------------------------------

有効期間の残りが30日未満の証明書のみ更新される。

サイトのssl化の手順

サイトのssl化の手順 覚書

let's encrypt の更新はこちら

さくらのレンタルサーバー かつ wordpress 利用の場合

-----------------------------------------------------------------------------------------

1.さくらのサーバーコントロールから無料SSL証明書を発行

2.Really Simple SSL をインストールして実行

さくらインターネット提供のプラグインも存在するが php のバージョンが違ったので Really Simple SSL をインストールした

参考サイト

https://zenlogic.jp/aossl/operation/wp-plugin/

3.google の Search Console と analytics の設定を変更する

https://candy.fun-net.biz/https-google-search-console-analytics/

-----------------------------------------------------------------------------------------

さくらのレンタルサーバー かつ wordpress でないの場合

-----------------------------------------------------------------------------------------
1さくらのレンタルサーバー wordpress でない場合

1.さくらのサーバーコントロールから無料SSL証明書を発行

2.CSS や 画像ファイル の URL を http → https に変更

SSL証明書を発行後に https のアドレスでページにアクセスすると表示はされるもののレイアウトが崩れる。このとき chrome のアドレスバーには鍵マークでなく「!」になっていた。原因は http CSS や画像ファイルを http で読み込んでいるのが原因なので https に書き換える。

3.htaccess で http → https の301リダイレクトを設定

htaccess に記述
---------------------------------------------------
RewriteEngine on
RewriteCond %{HTTPS} off //RewriteRuleが実行される条件。直後の RewriteRule のみが対象
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
---------------------------------------------------

4.google の Search Console と analytics の設定を変更する

https://candy.fun-net.biz/https-google-search-console-analytics/

-----------------------------------------------------------------------------------------

さくらのvpsの場合

基本的にここ↓を参考にする

https://knowledge.sakura.ad.jp/10534/

しかしリンク先の解説は CentOS7 を対象としているが、自分が利用しているのは CentOS6.9なのでちょいちょい違うので注意。

ファイアウォールのコマンドは CentOS6.9を利用しているので firewall-cmd ではなく iptables を使う。

iptables の起動状態を確認
-------------------------------------
/etc/init.d/iptables status
-------------------------------------

ssl で利用する 443 ポートが開いていることを確認
-------------------------------------
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:443
-------------------------------------

Let's Encrypt を利用するには Certbot を利用する必要があるのでインストール

コマンド
-------------------------------------
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto
-------------------------------------

その後指示に従う。

途中で、http でのアクセスを https にリダイレクトするか聞かれるが、手動(htaccess)でリダイレクトしたいので「1」を選択

-------------------------------------

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
-------------------------------------

インストールが完了したら httpd を再起動

-------------------------------------
service httpd start
-------------------------------------

https でアクセスできるか確認する

二つ契約しているさくらのVPSの片一方がうまく SSL化できなかった。

適用するドメインを選択するこの場面で現在利用してないドメインも選択したのが原因だと思われる。

Which names would you like to activate HTTPS for?
-------------------------------------------------------------------------------
1: one,example.com
1: two,example.com
1: three,example.com
1: four,example.com
1: five,example.com
1: six,example.com
1: seven,example.com
1: eight,example.com
-------------------------------------------------------------------------------

エラーが出てきちんと完了しない場合は、関連ファイルを全部消して再度実行するといい。
削除したファイル1
----------------------------------------------------
rm -rf /opt/eff.org/certbot
rm -rf /etc/letsencrypt
----------------------------------------------------

削除したファイル2
certbot-auto というファイルがいくつかのディレクトリ内にできているのですべて削除
探す場所
----------------------------------------------------
cd /opt/eff.org/
cd /etc/
cd /etc/httpd/conf.d/
----------------------------------------------------

不要ファイルをすべて削除したら再度実行。

コマンド
-------------------------------------
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto
-------------------------------------

【linux】はじめてのcron実行

まず、cron が使える状態であることを確認
-------------------------------------------------
# /etc/rc.d/init.d/crond status
crond (pid xxxx) を実行中... // 動いている!
-------------------------------------------------

ターミナルからサーバーにログインしてcrontabを編集
-------------------------------------------------
crontab -e
-------------------------------------------------
※ crontab -r は全消去なので注意
※内容確認は crontab -l

//編集内容。一分おきに「テスト出力」を追記
-------------------------------------------------
*/1 * * * * echo "テスト出力" >> /var/backup_sql/test.txt
-------------------------------------------------

日付入りファイルの場合
--------------------------------------------------
*/1 * * * * echo "テスト出力" >> /var/backup_sql/backup_`date +\%Y\%m\%d`.txt
--------------------------------------------------
日付は本来 date +%Y%m%d でいけるが、cron の場合 \ のエスケープが必要

一分過ぎたらファイルが出力されているか確認する
-------------------------------------------------
cat /var/backup_sql/test.txt
-------------------------------------------------

cron のログ確認ならこっち
-------------------------------------------------
tail -f /var/log/cron
-------------------------------------------------
※tail は最後の10行のみ表示

毎晩三時二分にシェルスクリプトを実行
-------------------------------------------------
#am03:02 execution
2 3 * * * /var/myshellscript/backupmysql.sh
-------------------------------------------------

backupmysql.sh の内容
-------------------------------------------------
#!/bin/sh

# バックアップの保存期間(days)
period=30

# バックアップ保存用ディレクトリの指定
dirpath='/var/backup_sql'

# MySQLrootパスワード
ROOTPASS=xxxxxxxx

# ファイル名を指定する(※ファイル名で日付がわかるようにしておきます)
filename=`date +%y%m%d`

# 指定したDBのスキーマおよびデータをすべて吐き出す ファイル名接頭辞はあれば
mysqldump -u root --password=パスワード データベース名 テーブル名 > $dirpath/ファイル名接頭辞_$filename.sql

# パーミッション変更
chmod 700 $dirpath/ファイル名接頭辞_$filename.sql

# 保存期間を過ぎたバックアップを削除
oldfile=`date --date "$period days ago" +%y%m%d`
rm -f $dirpath/ファイル名接頭辞_$oldfile.sql
-------------------------------------------------

1 / 3112345...102030...最後 »