主に IT 技術を整理するためにメモ的に書き溜めています。少しだけフリーソフトもあるよ。コメントを残すには、 facebook を使ってください。

PHP 経由でのリモートコピーができない、時の対処法の一例


PHP-8.1 on Ubuntu-22 で composer をインストールしようとした時の事。

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
PHP Warning:  copy(https://getcomposer.org/installer): Failed to open stream: Connection timed out in Command line code on line 1

PHP での copy() でタイムアウトしてる?
curl とか wget なら問題ないから、
allow_url_fopen とか allow_url_include とか、PHP 関連かと思って色々試しても全然解決できない。
なんかクラウドの環境の依存かなとかホスティングかなとか、散々困った挙句、結局以下で解決。

# echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6


なんでこれで解決するの

jquery で getElementById() と同等のオブジェクトを取得するには

以下は同等の値を代入する。

var hoge = document.getElementById("hoge");
var hoge = $("#hoge").get(0);
var hoge = $("#hoge")[0];

もっと読む

Javascript で trim するには

近頃のブラウザーのJavascriptエンジンは大体trim関数に対応しているので、以下のようにできる。

var str = " abc ";
var trimmed_str = str.trim();

もし古いブラウザのサポートとかでtrim関数が無い場合は、代わりに replace を用いて文字列の前後の空白を取り除くなどの方法がある。

target = target.replace(/(^\s+)|(\s+$)/g, "");

左側のみを取り除く ltrim も同様な方法でできる。

target = target.replace(/^\s+/, "");

右側の rtrim も同様に。

target = target.replace(/\s+$/, "");

もし全角空白も取り除きたい場合は \s+ の部分を [\s ]+ とするとできる。

更に、 prototype 言語らしく String クラスを装飾してやる方法や jquery を使う方法も一応書いておく。


もっと読む

ubuntu 16.04 で複数のバージョンの PHP を使う、切り替える


Ubuntu 16.04LTS はデフォルトが php7 で、時に php5 が必要なことがあるので、そんなときにどうするかのメモ。


もっと読む

Phusion Passenger の実行ユーザーを指定するには

Phusion Passenger の標準の実行ユーザーは Apache の実行ユーザー、例えば Ubuntu だと www-data 、とは違うらしい。これを変更するには

PassengerDefaultUser www-data

を mods-available/passenger.conf なりに指定する。

telnet で ssl 接続をしたい

telnet コマンドは基本的に平文の通信しかサポートしてなくて、 HTTPS プロトコルに HTTP コマンドを手動でちょっと発行したいときなどに対応できない。
debian には telnet-ssl っていうパッケージがあるみたい何だけど、 CentOS 5 上でコンパイルしようとしたらどうにもエラーで進まないので、ちょっと perl でサイトを色々参考にして作ってみた。その時のメモ。というかソース。
特に細かい説明は無し。

追記:最近はほとんど openssl の s_client でやっている。

$ openssl s_client -connect www.example.com:443

もっと読む

javascript のコールバック関数を引数付きで指定するには

javascript で例えば簡単な例で setTimeout() 関数にコールバック関数を引数付きで指定したい例を考えてみる。

var sayHello = function(who) {
	alert('Hi ' + who + '!');
};

setTimeout(sayHello, 3000);

これだと who には何も値が渡らず Hi undefined! となってしまう。
かといって sayHello('Mike') とかやるとそれが実行された結果が渡されて、 setTimeout() 自体動作しない。
グローバルな変数を定義しておくとか解決方法はいくつうかあると思うけど、きれいなやり方を数例メモしておく。


もっと読む

mongrel_cluster で ruby on rails を動作させるには

まじめに Rails アプリを Mongrel cluster でセットアップした時のメモ。環境は、 ruby-1.8.7-p334@rails_2_3_14 です。

注意: Mongrel-1.1.5 は Rails3 ではエラーで動きません。
1.2.0pre2 を使うか、 Rails のバージョンをデグレするか、もしくは、手動で Mongrel を少しいじるか。
もしくは Thin か Phusion Passenger を使ってもいいかと思います。
ちなみにエラーは以下のようなもの。

[Enjoi-MacBook:~/Websites/EnjoiTech/www.enjoitech.com] $ mongrel_rails start
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
/usr/local/rvm/gems/ruby-1.8.7-p334@rails_3_0_9/gems/activesupport-3.0.9/lib/active_support/dependencies.rb:239:in `require': no such file to load -- dispatcher (LoadError)

Passenger を使えばこんな小面倒くさいことはしなくてもいいんですけどね。 cluster とか響きがいいじゃないですか。


もっと読む

php の foreach で参照渡しをするには

phpforeach は基本値渡しで、受け取った値を変更しても当然元の配列データは変更されない。
でも実際は参照渡しもできることを知ったので一応メモ。

以下は普通の値渡しの例。

$enjoi = array("normal", "crazy");
foreach( $enjoi as $e )
{
  if( $e == "crazy" )
  {
    $e = "normal";
  }
}
var_dump($enjoi);
array(2) { [0]=>  string(6) "normal" [1]=>  string(6) "crazy" }

でも関数の参照渡しみたいに & をつけてやると、参照渡しを使って foreach で配列を処理できる。

$enjoi = array("normal", "crazy");
foreach( $enjoi as &$e )
{
  if( $e == "crazy" )
  {
    $e = "normal";
  }
}
var_dump($enjoi);
array(2) { [0]=>  string(6) "normal" [1]=>  &string(6) "normal" }

同様に key-value 配列を扱う場合も value の変数に & をつければ同じようにできる。

foreach( $enjoi as $key => &$val ) { ... }

もっと読む

Ruby gem で native extensions をインストールするには

Native extensions をインストールしようとすると、通常の gem install コマンドではうまくいかないことがある。
この場合、以下のようにビルドソースを指定してやる必要がある。

$ sudo gem install ruby-debug19 -- --with-ruby-include=/Users/ma/Documents/Build/tar/ruby-1.9.2-p0/

Postgresql の pg extension の場合で、 Mac にパッケージで Postgresql をインストールしてある場合は

gem install pg -- --with-pg-config=/Library/PostgreSQL/9.0/bin/pg_config

という感じ。


もっと読む

rvm install で readline コンパイルエラー

rvm で ruby 1.8.7 をインストールしようとした際に、コンパイルエラーでインストールに失敗した。ログを見てみると

readline.c: In function ‘username_completion_proc_call’:
readline.c:730: error: ‘username_completion_function’ undeclared (first use in this function)
readline.c:730: error: (Each undeclared identifier is reported only once
readline.c:730: error: for each function it appears in.)
make[1]: *** [readline.o] Error 1

代わりに自分で readline をダウンロードしてコンパイル、 /usr/local/ にインストールして、もう一度 readline のインストールパスを指定して rvm install

vm install 1.8.7 -C --with-readline-dir=/usr/local/

もしくは rvm readline パッケージをインストールしてコンパイルしてもうまくいくこともあるらしい。

$ rvm --skip-autoreconf pkg install readline
$ rvm reinstall 1.8.7

rvm で "LoadError: no such file to load -- openssl"

rvm を使って rails-3.2.3 を実行しようとした際に、

LoadError: no such file to load -- openssl

となり実行できなかった。 openssl の RPM は devel も含めてインストールされてるので、何が原因かと探したら、 rvm の openssl パッケージを入れた方がいいらしい。
とりあえず、 ruby を入れ直す。

$ rvm uninstall 1.8.7
$ rvm cleanup all
$ rvm pkg install openssl
$ rvm install 1.8.7

これで更に rails を入れ直したら、動くようになりました。同様に iconv などでも発生する事があるかと思います。

Mac OSX で dylib などのライブラリ内のリンク情報を変更するには

以前 rvm を Mac OSX にインストールして、いざ rails を実行すると、以下のようなリンクエラーが出る。

$ ./script/server start
dyld: lazy symbol binding failed: Symbol not found: _libiconv_open
  Referenced from: /usr/local/rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-darwin10.7.0/iconv.bundle
  Expected in: flat namespace

dyld: Symbol not found: _libiconv_open
  Referenced from: /usr/local/rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-darwin10.7.0/iconv.bundle
  Expected in: flat namespace

Trace/BPT trap

これは要するに iconv.bundle がリンクしている先の libiconv ライブラリに存在すべきシンボルが無いという旨のエラー。発生する原因は色々あると思うけど、多いのは独自にライブラリを ports や コンパイルなどでインストールして複数存在する場合に起こる事が多いと思う。
例えば今回の場合は、独自に libiconv を /usr/local にインストールしていたため、 rvm インストール時に使用されたライブラリと、いざ実行したさいにロードしようとしているライブラリが違ってしまっているためエラーが発生する。

解決方法がいくつかあったので、それをメモ。


もっと読む

Symfony2 memo

Symfony2 で新たに追加された感じのやつを忘れないようにメモ。

増えてきたので、段落化しました。


もっと読む

Mac に php をインストールするには

Mac に LAMP もとい MAMP 環境を構築したときのメモ。いろいろと癖もあったりはまったところもあったけど、とにかくできました。

構築する上でのポリシーとしては、

  • ライブラリ関連はできるだけ DarwinPorts でインストールしたものにリンクさせる。
  • MySQL 、 PostgreSQL 、 Apache 、 php は /usr/local にインストール。
  • Apache と php はなるべく Shared module 化するようにする。

Mac にインストールされているライブラリと DarwinPorts で入れたものを混合するとコンパイルでエラーを起こすことが多いっぽい。

環境は以下の通り。
Mac OS X 10.5.6
mysql-5.1.33
postgresql-8.3.7
apache-2.2.11
php-5.2.9


もっと読む

Zend_Mail でメールを送るには

Zend Framework の Zend_Mail を使用すると色々な方法で簡単にメールが送れます。色々試してみたので、 Zend_Mail を使用して以下のそれぞれの方法でメールを送る方法のメモ。

  • ローカルの sendmail(.postfix) を使用してメールを送る
  • リモートもしくはローカルの SMTP に接続してメールを送る
  • Gmail もしくは auth-SMTP などの有効なサーバでもメールを送ってみる

もっと読む

PHPUnit with Zend Framework memo

Zend framework で PHPUnit を統合したテスト環境を構築したときのメモ。


もっと読む

Ruby on Rails メモ

Ruby on Rails で覚えておくと便利(よく忘れる)ことをメモしておく。


もっと読む

jquery で任意のオブジェクトの位置までスクロールするには

オブジェクトの位置を offset().top で取得して、 animate() で body の scrollTop を変更する。

var divOffset = $('#hogeContainer').offset().top;
$('body').animate({scrollTop: divOffset + 'px'}, 1000);

Wordpress を SQLite で動かすには

うちのレンタルサーバのスペックが低いため MySQL 動かしたくないので、 Wordpress を SQLite で動かすようにしてみた。

してみたと言っても、プラグインがあるのでそれを入れるだけ。でもそもそも個人や一企業で使うブログを MySQL なんてもので動かすのもナンセンスな話だし、 SQLite は早い。なので、一応メモ。


もっと読む
ページ: 1 | 2 | 3 | 4 | 5 |
フリーソフトウエア
EnjoiFLV
EnjoiPacket
EnjoiCrypto
ランキング
rank2, rank3, rank7, rank10, rank11
todo メモ
facebook 対応
ページ処理
RSS feed
検索機能
認証いる?
更新日表示
実はカテゴリ機能
多言語
実はユーザ機能
ソースその内公開
動作環境メモ
php-5.1.6 with PDO
SQLite-3.3
IE6
FireFox-1.5
RSS
非認証

検索
Google