カテゴリー ‘ WEB/DB

GitクローンでPermission denied (publickey).

OSX SourcetreeでbitbucketのリポジトリをSSHでクローンしようとすると、「ソースパスまたはソースurlとして正しくありません」Permission denied(publickey).となって失敗する。
これは2台のマシン(仮にA/B)を使用していて、AでSourcetree上で作成したSSHキーをBにコピーして使用した場合にBで起こる現象だった。(A上ではクローンは成功する。)
下記で解決した。

Bの.sshにコピーした秘密鍵xxxxxをSSHに追加する。

ssh-add ~/.ssh/xxxxx

以上で無事Bでもクローンが作成できた。

以下参照ページ。感謝。

BitBucketにpush不可

SSH Agentについては下記を参照した。こちらも感謝です。
ssh-agentの使い方

OS X LocalhostのApache PHP からプロバイダのSMTPサーバーでメール送信

OS X のLocalhost内のApache + PHPのmb_sendmailからプロバイダのSMTPサーバを指定してメール送信すると「Domain of sender address _www@hoge.local does not exist」送信元ドメインが存在しないので、失敗します。

php.iniやpostfixをいじるなどのいろいろな情報があったのですが、最終的に下記で解決しました。
ざっくりいうと、送信用のアカウント・パスワードとドメインをpostfix上で指定するという設定作業です。

お約束ですが、作業はすべて自己責任で行ってください。

————–
例)
OS Xローカルサーバー:hoge.local
プロバイダ:foo.ne.jp
送信ポート:587

すべてターミナル上での作業です。

  1. postfixの起動
    # sudo postfix start
  2. main.cfの編集(編集にはもっぱらpicoを使っています。)
    # sudo pico /etc/postfix/main.cf

    relayhost = [smtp.foo.ne.jp]:587
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/authinfo
    smtp_sasl_security_options = noanonymous
    smtp_sasl_mechanism_filter = CRAM-MD5 PLAIN
    smtp_generic_maps = hash:/etc/postfix/sender_canonical
    ※認証方法はプロバイダによって違います。こちらに詳しく記載されています。

  3. 認証ファイルの作成
    # sudo pico /etc/postfix/authinfo

    [smtp.foo.ne.jp]:587 bar@foo.ne.jp:password

    # sudo postmap /etc/postfix/authinfo

  4. sender_canonicalファイルの作成 こちらに詳しく記載されています。
    # sudo pico /etc/postfix/sender_canonical

    @hoge.local bar@foo.ne.jp

    # sudo hash:/etc/postfix/sender_canonical

  5. postfixのリロード

    # sudo postfix reload

以上でPHPからmb_sendmailでメールの送信に成功しました。

参考にさせていただいた2つのサイトの方に感謝します。

 

OS X 10.10.5, PHP 5.5.29

Yosemite apacheユーザのSitesディレクトリでPermission denied

MavericksからYosemiteにアップグレードしたらApacheが停止していたので、apachectl startで起動した。ドキュメントルートは表示できたのだが、ユーザ毎のディレクトリがPermission deniedで表示できない。

MavericksのApacheが2.2なのに対してYosemiteでは2.4に上がっているようだ。
すこし[username].confの記述方法が違うらしい。

下記のように設定すると表示されるようになった。

Apache localhost 403 error with Yosemite | stackoverflow

アップグレードするたびに何かあるな。

OS X 10.10.4

 

[追記]

Yosemiteをクリーンインストールした時に上記だけでは解決できない場合があった。
httpd.confのユーザ・グループのデフォルト値を下記のように変更した。

User _www
Group _www

User 自分のユーザー名
Group staff

ローカルの開発環境なので取り敢えずこうしておこう。

 

Mavericks OSX 10.9 インターネットユーティリティ.appどこいった?

久しぶりにインターネットユーティリティ.appを使おうと思ったらアプリケーションフォルダ内に見つからない。

あれ? と思って他のMavericksマシンをチェックしてもやはりない。

Mavericksで廃止されたのかな? と思ったら/system/Library/CoreServices/Applicationsに移動していた。

以前もこんな移動があったように思うけど、どんな基準で移動になってるんでしょう?

 

参考にさせていただきました。ありがとうございます。

http://mac.kumadoumei.net/2014/05/os-x-109-mavericksapp.html

OS X アップグレード時の注意 Apache PHP

Mountain Lionからシステム環境設定 > 共有から「Web共有」のチェックボタンがなくなった。これはMavericksでも復活はしていない。

そしてOS Xアップグレード後にはApacheが停止している。再起動するにはコマンドラインから再設定が必要なのだけれど、httpd.confも新しくなっているのでApache再起動後確認する必要がある。

特にPHPはデフォルトでOFFになっているのでアップグレード前のOSでPHPを使用していた場合はApacheの再起動をするとPHPファイルがテキストファイルとして表示されてしまう。なのでソースにパスワードなどが記載されていると丸見えになる。

公開サーバーをアップグレードするときは、必ずPHPの動作確認まですることを忘れないようにしないととても残念なことになってしまう。

Mavericksは無料だし、インストーラのおかげで楽にアップグレードができるので嬉しいのだけど。注意注意。

Passbookのhttp接続

なにかと話題のPassbookだが、プログラミングガイドには、開発時はアップデートなどでやりとりをする為のサーバーにhttpで平文によるテストができるとあるが、実機で試すとjson内のurlにhttp://を記述しただけで、Passbookアプリがpassを食ってくれない。デバイスのログを見るとsslの時は確かに通信をしにいっているようだが、認証でこけている。
iPhone側かな? と思って確かめるとありました。設定アプリの「デベロッパ」>「PassKit Testing」の「Allow HTTP Service」これをONにすると、httpと書いたpassも食ってくれて通信も始めました。ほんと設定っていろんな所にあったりかわったりで見つけるの大変。でも見つかった時は嬉しい。

APNs本番サーバーでPush通知できない!

APNs(Apple Push Notification Service)のテストをしたのだが、本番(Production)で動かすとPush通知が来ない現象がおこった。大まかな構成は...

  1. iOS用アプリ・・・APNsよりトークンの取得、APNsからのPush通知の受け取り
  2. プロバイダー(Webサーバー)・・・任意デバイスへのPush情報をAPNsに送信

尚、iOSアプリは「Ad Hoc」、プロバイダーは「ApnsPHP」を使用した。

APNsの仕組みや具体的な実装については、「iPhoneアプリで稼げるのか」さんが、ApnsPHPは、「PROGRAMMING NOTE」さんが、それぞれ詳しく解説されていてとてもありがたい。

Development用に実装した場合は若干手間取るものの、デバイスに通知がされることを確認できた。(プロバイダーで使用したファイルは、sample_push.phpとsample_feedback.php)

ただ、Production用にアーカイブを作成して実機テストをしてみると、うんともすんとも言わない...

一旦、Provisioning Portal で該当するApp IDのPush SSL CertificateをProduction用だけにして再作成し、Distribution Provisioning Profileも再作成した。また、.pemファイルも再作成してみたが、改善しなかった。(これらについては結果的に効果があったかどうかは不明)

さて困ったと、いろいろ調べて行くと下記の部分が問題であることが分かった。

■デバイス識別トークンは開発用と本番用は違うものが発行される。
早速実機上で再度トークンを取得してみると確かに開発用と違うものが返された。

■そもそもAPNsサーバーは開発用と本番用は違う。
これは完全に見落としていた。sample_push.phpとsample_feedback.phpの定数「ENVIRONMENT_SANDBOX」を「ENVIRONMENT_PRODUCTION」に変更した。

これで通知されるようになりました。また、開発用では、フィードバックが取得できていなかったのだが、本番用では取得できた。
あー、すっきりした。
Xcode4.5.1, OS X10.7.5, iOS5.1, Apns-PHPr100

10.8 Mountain Lion の secure.log どこいった?

SSHのアクセスログを見ようと思ったら/var/secure.logが見つからない? あれ?どこだっけ?って探すと、 OS X 10.8 Moutain Lionからはどうやら、/var/system.logに吐かれるようになったみたいだ。微妙に変わっているなぁ。

それから、Moutain Lionにアップブレードをする時に、OS Xで「ウェブ共有」+ PHPでウェブを公開している場合は、一旦共有をやめてからアップグレードした方が懸命かと思われます。アップグレードをすると、なぜか一旦ApacheのモジュールからPHPが除外されます。そのためPHPファイルにアクセスすると設定によってはそのままPHPのソースコードが丸見えになり、パスワードなどを記載したコンフィグファイルなどは大公開の大判振る舞い状態になっちゃいます...

return top