WordPressのアップグレードができない

Docker移管後に、管理画面からWordPressの自動アップグレードを実行すると、画面の右側が真っ白になりアップグレードが失敗するようになりました。具体的にどのファイルが影響していたか分かりませんでしたが、Apacheの実行ユーザーに対し、WordPressのインストールディレクトリの配下のファイルへの書き込み権限を付与すると、問題が解決しました。

$ chmod u+w /war/www/html -R

Javascriptで文字列操作

文字列の結合

文字列の結合にはconcatメソッドを利用します。

var str1 = 'ABC';
var str2 = 'DE';

var str = str1.concat(str2);

「+」を使っても同じです。

var str = str1 + str2;

文字数のカウント

文字数のカウントにはlengthメソッドを利用します。最近のブラウザではマルチバイト文字も対応しています。

var str = 'ABCDE';
var len = str.length;

コマンドプロンプトのコマンドの一覧

Windowsのコマンドプロンプトで利用できるコマンドの備忘録です。比較のため、同様のLinuxコマンドも載せています。

コマンド(コマンドプロンプト) コマンド(Linux) 意味 備考
cd <移動先のパス> cd <移動先のパス> 違うフォルダに移動する
dir <フォルダのパス> ls <フォルダのパス> フォルダに含まれるファイルの一覧を表示
type nul > <ファイルパス> touch <ファイルパス> 空ファイルを作成
mkdir <フォルダのパス> mkdir <フォルダのパス> フォルダの作成
del <ファイルパス> rm <ファイルパス> ファイルの削除

WordPressでプラグイン更新時にFTPの接続情報入力ページが表示される

最近、当ブログをDocker上に移管しました。その後、プラグインを更新しようとすると、

以下のように、「要求されたアクションを実行するには、WordPress が Web サーバーにアクセスする必要があります。次に進むには FTP の接続情報を入力してください。」というメッセージと共に、FTP接続情報を入力するフォームが現れるようになりました。

調査の結果、これはサーバー上のwp-contentディレクトリの所有者が、Webサーバーの実行者と違う場合に発生するエラーのようです。

rootになっている所有者をApacheの実行ユーザーであるwww-dataにchownコマンドで変更すると、

$ chown -R www-data:www-data wp-content

正しくプラグインの更新ができました。

AngularJSでJSONファイルを扱う

AngularJSでJSONファイルを扱うには、ngResourceモジュールを利用するのが一般的なようです。

JSONに含まれるデータが配列の場合は、queryメソッドを使います。以下の例では、取得したデータをbooksというスコープ変数に代入すると同時に、booksの各要素をコンソールに出力する処理をしています。ngResourceは非同期読み込みなので、読み込んだ後に実行したい関数をqueryメソッドの引数として渡す形になります。

[
  {"name": "name1", "price": 1000},
  {"name": "name2", "price": 1500},
  {"name": "name3", "price": 3000}
]
angular.module('myApp', ['ngResource'])
  .controller('bookCtrl', ['$scope', '$resource', function($scope, $resource){
    var Book = $resource('/path/to/json');
    $scope.books = $resource.query(function(books) {
      for (var i = 0; i < books.length; i++) {
        console.log(books[i]);
      }
    });
  }]);

データがハッシュの場合は、queryではなくgetを使用します。

{
  "name1": {"price": 1000},
  "name2": {"price": 1500},
  "name3": {"price": 3000}
}
angular.module('myApp', ['ngResource'])
  .controller('bookCtrl', ['$scope', '$resource', function($scope, $resource){
    var Book = $resource('/path/to/json');
    $scope.books = $resource.get(function(books) {
      for (var key in books) {
        console.log(books[key]);
      }
    });
  }]);

LaravelでSSL certificate problem

LaravelでFacebookOAuth認証を行おうとしたところ、以下のようなエラーが発生しました。

RequestException in CurlFactory.php line 187:
cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)

調査の結果、CA証明書がphp.iniで正しく設定されていないことが原因であると分かりました。

http://curl.haxx.se/ca/cacert.pem

をダウンロードして、「C:\php\cacert.pem」として保存し、php.iniに以下の記述を加えることで、エラーが解消されました。

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo=C:\php\cacert.pem

LaravelのmigrateでPDOException

Laravelでmigrateコマンドを使用したところ、PDOException(could no find driver)が発生しました。

$ php artisan migrate
**************************************
*     Application In Production!     *
**************************************

 Do you really wish to run this command? [y/N] (yes/no) [no]:
 > yes



  [PDOException]
  could not find driver

調査の結果、php.iniのMySQL拡張がコメントされているという凡ミスでした。「;」を外して、再度実行すると正しく処理されました。

$ vi php.ini

...
;extension=php_pdo_mysql.dll
...

LaravelでCouldn’t find preset “es2015″エラー

Laravelプロジェクトを新しく作成し、gulpを通じてelixirを実行したところ、以下のようなエラーが出ました。

これを解決するには、以下の二つのパッケージをインストールする必要があるようです。

$ npm install babel-preset-es2015 --save
$ npm install babel-preset-react --save

こちらの議論では、npmをアップグレードすれば解決するとの発言もありますが、私の環境ではうまくいきませんでした。

Node.jsのアップグレード

Node.jsのアップグレードには、npmコマンドを利用します。

$ npm install n -g

しかし、Windowsでは以下のようなエラーが出て、アップグレードに失敗します。

npm ERR! Windows_NT 10.0.10586
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\seiyata\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js" "install" "n" "-g"
npm ERR! node v4.4.3
npm ERR! npm  v3.8.8
npm ERR! code EBADPLATFORM

npm ERR! notsup Not compatible with your operating system or architecture: n@2.1.0
npm ERR! notsup Valid OS:    !win32
npm ERR! notsup Valid Arch:  any
npm ERR! notsup Actual OS:   win32
npm ERR! notsup Actual Arch: x64

npm ERR! Please include the following file with any support request:
npm ERR!     D:\workspace\pop\npm-debug.log

現在のところ、インストーラーを利用するしかなさそうです。

Top