動かざることバグの如し

近づきたいよ 君の理想に

php

PHPで文字列を1文字ずつ分割する方法が進化してた

php

令和最新版のPHPは一味違うぜ 概要 すごく昔に、PHPで文字列を1文字ずつの配列に変換する方法について記事を書いた。 thr3a.hatenablog.com このときはメモ程度だったが、実は今でもそこそこPVがある。 流石に令和だしPHP7どころか8も出たしなにかアップデ…

Dockerのphp-fpmをrootで実行させる方法

環境 php 7.4 概要 訳合ってdockerで動かすphp-fpmのコンテナ内のphp-fpmをrootで実行したいということになった。 が、セキュリティ上の理由かデフォルトではrootではなくwww-dataというユーザーで動作している root@43910975d907:~# ps aux USER PID %CPU %…

コピペで使えるcurlでHTTPリクエストする.php

php

使用頻度高いのでテンプレートってことでメモ 確認環境 PHP 5.6 PHP 7.4 コード 'value' ]; $url = 'https://httpbin.org/get?' . http_build_query($params); // $url = 'https://httpbin.org/status/500'; $curl = curl_init(); $curl_options = [ CURLOP…

PHPのImageMagickでsetCompressionQualityが効かない件

php

結論 setCompressionQuality ではなく setImageCompressionQuality を使え 経緯 以下のようなPHPのコードでImageMagickで画像を圧縮しようとした。しかし一向に画像サイズが小さくならない。 setCompressionQuality(10); $im->writeImage('test_1.jpg'); お…

PHP DockerにImageMagickをインストールする

php

環境 docker php 7 多分5系でも可能 やりたいこと 公式のphp dockerイメージのPHPでImageMagickで画像処理を使いたい。 やり方 そのままでは無いので自分でImageMagickを追加する必要がある。がpeclでインストールしてdocker-php-ext-enable imagick するだ…

PHPで「Class 'UConverter' not found」エラーになる

php

久々にPHPの記事 コード探してもないと思ったら単にライブラリ不足だった 環境 PHP 5.x PHP 7.x エラー内容 PHP実行したら Fatal error: Class 'UConverter' not found in ... でエラーになる。 ソースgrepしても出てこないからおかしいなと思ったらUConvert…

PHPで「Fatal error: Allowed memory size of」エラーを発生させる4行

php

昔のメモ整理してたら出てきたのでメモ やり方 以下のコードを実行するとエラーになって実行が止まってしまう

PHPからSMTPでメール送信するためにライブラリインストール

環境 CentsOS php 5.6 Webtatic.comのレポジトリを使用しているとする ここではまずpearを入れて、pear経由でSMTPメール送信に必要なライブラリをインストールしていく pearのインストール yum install php56w-pear pearのライブラリ情報をアップデート ネッ…

PHPで複数画像を1枚の画像に結合する

php

環境 php 5.6 多分7以降でも動くと思う(未検証 やりたいこと 例えば以下のような画像3枚があったとして こんな感じに縦並びで1枚の画像に結合したい ImageMagickを使う方法 PHPからImageMagickを叩くことができる(imagick.soのインストールが必要) PHP:…

Dockerのphp-fpmでImageMagickを使う方法

やりたいこと PHPの公式ドキュメントを見て貰えればわかるように、PHPからImageMagickを通して多くの画像処理を行うことができる。が、当然サーバー上にImageMagickがインストールされてなければならない。 docker上で操作したいときに若干はハマったのでメ…

PHP + utf8mb4のMySQLにDB接続ができないとき

環境 CentOS 6 PHP 7.1 (ただし5系でも確認できた MariaDB 10.1 MySQLに接続できない PHPからPDO経由でMySQLへ接続しようとしてもうまくいかない。 PDOException: SQLSTATE[HY000] [102] Can't initialize character set utf8mb4 (path: /usr/share/mysql/ch…

PHPで「Call to undefined function bcadd() 」エラーが起きた

php

前にセットアップしていたときに見慣れないエラーに遭遇した [Wed Nov 01 19:35:58 2017] [error] [client 192.168.1.66] PHP Fatal error: Call to undefined function bcadd() in /******.php on line 117, referer: http://192.168.1.11/index.php 結論か…

UbuntuでPHP7+Mecabのインストール

環境 Ubuntu server 16.04 nginx 流れとしてはphpインストール、mecabインストール、php-mecabのインストール、設定 PHPのインストール 恒例、レポジトリの追加 add-apt-repository ppa:ondrej/php apt-get update php-fpmのインストール。php-7.0-devをイン…

PHPでエラーログの確認に使えるコード100選

php

100個もいらないので6つで 確認環境 PHP 5.6

Phalcon PHPでバージョンの確認したい

昔?はphp -iでgrepすればイケたっぽいけど今はそれだとバージョンは表示されない のでそのままPHPを実行する $ php -r "echo Phalcon\Version::get();" > 3.2.2 そもそもPhalconがインストールがされているかの確認は-mで可能 $ php -m |grep phalcon phalc…

owncloudを高速化メモ

cronの見直し デフォルトではページ開くたびに更新が発生するっぽい() 素直にCrontabで定期的に実行させたほうがよさげ apacheユーザーでcrontabを開く sudo crontab -u www-data -e 以下追加 * * * * * php -f /var/www/owncloud/cron.php owncloud側の発…

Twitterの投票非公式APIのメモ

php

gist.github.com gist.github.com hiroto-k.hatenablog.com

Ubuntu 16.04ではPHP5.6をインストールすることは出来ない

発端 さぁ心機一転、Ubuntu16.04でPHPインストールしようとした。まぁ7.xも悪くないけど今回は安定志向ということでPHP5.6をインストールすることに sudo apt show php 結果 user@ubuntu:~$ sudo apt show php Package: php Version: 1:7.0+42+deb.sury.org~…

【MySQL】Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENTと出る

MySQLアップデートするとOwncloudが動かない。 おかしいと思って見ると以下の様なエラーが出てた。 An exception occurred while executing 'INSERT INTO `oc_users` ( `uid`, `password` ) VALUES( ?, ? )' with params ["user", "************************…

【CakePHP】ビューごとにタイトルを設定する

この辺はRailsより柔軟だなって思った とりあえずやり方教えろ まずapp/View/Layouts/default.ctpにて <html> <head> <title><?php echo $this->fetch('title'); ?></title> と書いておく。 んで各ビューにて assign('title', "自己紹介のページ"); とやるとその文字がタイトルになる </head></html>…

【PHP】強いランダムな文字列を生成する

php

ランダムな文字列を生成したい場合 7672ff626cとか14158e33deがほしい場合 ランダムな数値が欲しい場合 3807350098とか487496953とかが数字のみ(0-9)で欲しい場合はさっきのやつにbin2hex()を加えればおk この場合与えた(数値*2)+2が返ってくる…

composer installとcomposer requireの違い

なんてことはなかった composer installはインストールするだけ。composer requireはインストール&composer.jsonに依存状況を記述 つまりcomposer requireはnpm install -S socket.ioに相当する

PHPで連想配列の特定のキーのみ削除する方法

php

環境 PHP 5.6 やりたいこと タイトルそのまんま コード 4, "name" => "Hoge"]; $array[] = ["id" => 3, "name" => "Piyo"]; $array[] = ["id" => 2, "name" => "Fuga"]; $array[] = ["id" => 1, "name" => "Foo"]; $result = array_map(function ($v) { uns…

Rubyのsort_byをPHPでも使いたい人へ 配列内の値でソート

php

rubyのsort_byはめっちゃ便利。マジで ary = [{id: 2,name:"hoge"},{id: 3,name:"hoge"},{id: 1,name:"hoge"}] p ary.sort_by { |_| _[:id] } => [{:id=>1, :name=>"hoge"}, {:id=>2, :name=>"hoge"}, {:id=>3, :name=>"hoge"}] ぜひこんなメソッドがPHPにあ…

【PHP】file_get_contentsでエラーの分岐

php

file_get_contentsは非常に便利なPHPのメソッドでたった一行で外部URLを取得できる が、しかし存在しないURLだったとかサーバーエラーとかの例外に弱い PHP Warning: file_get_contents(http://hogehoge.com/hoge/): failed to open stream: HTTP request f…

PHPのビルトインサーバーではDocumentRootを指定できる

php

知ってた? ビルトインサーバーとは 本来PHPで開発する際はWebサーバーを建てなきゃいけないのでApacheやnginxをインストールしなきゃいけない。 けどPHP5.4で実装されたビルトインサーバー機能を使えばPHPがWebサーバーとして起動してくれるので、Apache等…

PHPで「1ヶ月前の今日」を求めることはできない

php

久々にPHPFXXK案件に遭遇してしまった・・・・・ やりたかったこと 一ヶ月前の今日を求める 例を挙げると 2016年4月28日 → 2016年3月28日 2016年1月28日 → 2015年12月28日 ただし2016年3月31日のように先月にその日付が存在しない(先月日数<今月日数)場合…

やっとPHPでアップロードする処理を書いてみた

php

そういえばPHPでアップロードするフォーム画面作ったことないなぁってことで作成 今回は JSON形式のみアップロード可 日本語含むファイル名はまだ想定していない ファイルサイズ上限付き

PHPでファイルのアップロード

php

そういえばやったことないな、と <html> <head> <meta charset=utf-8" /> <title></title> </head> <body> <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="upfile" /> <input type="submit" value="アップロード" /> </form> </body> </html>

PHPでファイルの一覧を取得する方法

php

PHPにはDirectoryIteratorという便利な方法があるっぽい。 $path = dirname(__FILE__); $dir = new DirectoryIterator($path); foreach ($dir as $file) { $file = mb_convert_encoding($file, "UTF-8", "auto"); echo $file . "<br>"; } だがこれだと「.」と「.…