Category "Backend"を表示しています。
2019.9.16 月
php artisan tinkerを実行すると以下のようなエラーで実行できないことがあります。 In Configuration.php line 363: [ErrorException] mkdir(): Permission denied -vvvvをつけて、デバックモードでコマンドを実行してみます。 $ php artisan tinker -vvvv In Configuration.php line 363: [ErrorException] mkdir(): Permission denied Exception trace: Illuminate\Foundation\Bootstrap\HandleExceptions->handleError() at n/a:n...
2019.9.16 月
CentOS7でapacheを動かしている環境です。PHPは7.2.17で動いています。 laravel5でtinkerを実行すると以下のようなエラー(Warning) $ php artisan tinker PHP Warning: Module 'ssh2' already loaded in Unknown on line 0 ssh2が二重に読み込まれているっぽいので、エクステンションの部分を検索してみる。/etcあたりを検索。 $ find ./etc -type f | xargs grep "ssh2.so" ./php.d/ssh2.ini:extension=ssh2.so ./php.d/20-ssh2.ini:extension=ssh2.so どっちかが無駄っぽい気...
2019.3.28 木
maatwebsite/excelっていうパッケージがあってLaravelで開発するぶんには何もしなくてよいです。 https://github.com/Maatwebsite/Laravel-Excel https://packagist.org/packages/maatwebsite/excel インストール インストールします。(2019-03-28現在の最新版は3.1.10でした) php composer.phar require "maatwebsite/excel:~3.1.10" 後述しますが、3系のパッケージは読み込みの機能がなくなったようです。(前回の方々がなんで?って言ってます) ですので、エクセルの読み込み機能が必要なときは2系のパッケージをインストールしないと駄目...
2019.1.3 木
これは案外難しい。ちょっと考えただけでは駄目でした。 例にある通りだと以下のようになり、英数字のハッシュタグは所定のアンカーリンクに変換できます。 $test = preg_replace("/(?<![0-9a-zA-Z'\"#@=:;])#(\w*[a-zA-Z_])/u", "<a href=\"http://search.twitter.com/search?q=\\1\">#\\1</a>", $test); これに数字と日本語を加えると $textarea = preg_replace("/(?<![0-9a-zA-Z'\"#@=:;])#(\w*[a-zA-Z_0-9ぁ-んァ-ヶ\x{3005}\x{3007}\x{303b}\x{3400}...
2019.1.2 水
Parse error: syntax error, unexpected '?' in ... PHPのバージョンが古い疑い。php5.3とか使って新しいフレームワーク使おうとしているとか。
2018.12.26 水
composerを使うとVendorのライブラリーをすぐにつかえて嬉しい。Wordpressもそれ相応のコンテンツを作るには便利。プラグイン開発もだるい。functions.phpにやたらと複雑な機能を入れて何千行になるのも嫌だ。そこでAoutoloaderをwordpressの中で使えると便利なのです。 function.phpに読み込んだ方がいい と思います。theme単位の諸々なのでたぶんfunctions.phpに組み込むのがベスト・プラクティスなのではないかと。 wp-content/themes/sampledoc/function.php 以下を一番上あたりに追記 require_once __DIR__ . '/vendor/autoload.php'; WordPressに...
2018.11.14 水
これやたらとよく使うけど毎回忘れる。 $title_count = mb_strlen($title,"UTF-8"); $title = $title_count < 20 ? $title : mb_substr($title, 0,20)."..."; タイトルの文字数が20文字以下だったらそのまま出力。20文字以上だったら20文字に丸めて「…」をつけて出力。
2018.11.13 火
設定ファイルのデフォルトの状態のバックアップは必ずとっておく。 # cp -p /etc/php.ini /etc/php.ini.org Error表示関連 画面にエラー表示をする display_errors = Off ↓ display_errors = On たぶんデフォルトのままでよし。 error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT /var/log/httpd/errorあたりのログに出力するやつ。たぶんデフォルトのままでよし。 log_errors = On php関連のエラーログを有効にする ;error_log = php_errors.log ↓ error_log = php_errors.lo...
2018.11.8 木
Reverse Proxyがかんでいるwebサーバーでは以下のようなエラーになって正しいログイン情報を入れてもログインできません。 There is mismatch between HTTPS indicated on the server and client. This can lead to non working phpMyAdmin or a security risk. Please fix your server configuration to indicate HTTPS properly. mysqli_real_connect(): (HY000/1045): Access denied for user 'xxxxx'@'localhost' (using pass...
2018.10.30 火
つまりはもうフルスクラッチでなんかかけませんということなのです。 Composer Composerの入手 curlがあると楽。 $ curl -s http://getcomposer.org/installer | php 何もない場合は、 Download Composerから入手。 このコマンドのどれかで落ちてくると思います。 $ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" $ php -r "if (hash_file('SHA384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8...
2018.10.23 火
oci_connect()はデフォルトのPHPには含まれていない関数なのでoci8とpdo_ociのインストールが必要です。 Instant Client18.3 oci8 pdo_oci オラクルクライアント(Instant Client)のインストール まずは普通にコマンドラインからつながるようにしておきます。どっちにしろ開発で使うので。 Oracle Instant Client mysqlとかだったら特にクライアントとか意識せずにClientとRemoteの両方のマシンにmysqlをインストールしてしまえばいいんですが、Oracleは面倒です。まずはOracle Instant Clientでsqlplusでもってコマンド上でログインして操作できるようにしてみます。 Instant ...
2018.7.2 月
Twitter Appの基本設定 Packagist: themattharris/tmhoauth Github: themattharris/tmhOAuth TwitterのAouth認証でthemattharris/tmhoauthライブラリーを使います。composer.jsonに一行加えてcoomposer updateしておきます。(または、composer require themattharris/tmhoauth)LaravelとかSymfonyとかだったらこれでAutoloadされているのでOKです。プレーンのPHPの場合は自身でrequireしてください。 "require": { ... "themattharris/tmhoauth": "^0.8.4", ......
2018.6.13 水
複数のor検索 OR検索+あいまい検索で検索ワードが定まっていないときなんかはクロジャーを使ういいっぽい。 use Illuminate\Support\Facades\DB; ... $words = array("ライオン","ゲノム"); $records = DB::table('sometable')->orWhere(function($query) use($words){ foreach ($words as $k=>$word) { $query->orWhere('text', 'like', '%'.$word.'%'); } }) ->orderBy('id','desc') ->get();
2018.5.25 金
いろんな方法があるので、あれなんですが、こういう方法がいちばん簡潔。 $someObj = new someClass(); $someObj->{"foo"} = "hoge"; これで追加される。
2018.5.14 月
これらのライブラリは普通のプレーンなPHPでも使えるので重宝しますよ。 jenssegers/agent Mobile Detectのラッパーなんですが、Mobile Detectより人気ある感じになっちゃってますか。これ。 https://packagist.org/packages/jenssegers/agent https://github.com/jenssegers/agent monolog/monolog 普通のPHPでも便利。 https://packagist.org/packages/monolog/monolog https://github.com/Seldaek/monolog nesbot/carbon 時間計算は絶対に使うでしょ。だいたいのアプリで。 http...
2018.5.1 火
いろんな外部のアカウントでログインできるのは便利です。(しかしオープンIDはどこにいってしまったのでしょうか。) Amazonもその類にもれずAmazonアカウントで様々なシステムでログイが可能です。 Login with Amazon SDK https://developer.amazon.com/ja/sdk-download Android, iOS, Unity, Xamarin, Adobe AIR, Webという感じで様々なSDKがあるようですが、ここではWEB SDKでいろいろやってみます。 https://amazonadsi-a.akamaihd.net/public/Amazon-Mobile-App-SDK-by-Platform/Amazon-Web-SDKs.zi...
2018.3.13 火
前提条件 composerをそこそこ使える人。 gitをそこそこ使える人。 Githubのアカウントを作ってpush出来るように鍵の設定などを行っておく。 Travis CIのアカウントを作っておく。 (Githubのアカウントでログイン。) Packagistのアカウントを作っておく。 (Githubのアカウントでログイン。) Githubで適当なリポジトリを作成する Pachagistに登録するリポジトリとして適当なリポジトリを作成します。 ここでは osamuya/testPackage https://github.com/osamuya/testPackage.git として作成しておきます。 testPackage/としてプロジェクトを作成する感じでよいかと思います。 Packa...
2018.3.4 日
rsyncなどの実行をWEBページインターフェイスから実行しようと思うとそもそものユーザーではなくApacheがユーザーとして実行するので思うように実行できないことがります。更にSSHでリモート接続するときは実行ユーザーが全く違うので秘密鍵を読めないということになります。 しかし開発をしているとごく頻繁にいわゆるログインユーザーとApacheユーザーを併用したいという状況が訪れます。以下のユーザーを例にして説明します。 user: sampleuser Apache: apache PHPの実行ユーザーは以下で取得できます。 posix_getpwuid(posix_geteuid())['name'] cliでコマンドラインで実行すると想定通りのsampleuserとなりますが、webから...
2018.2.28 水
Rsyncの使い方では生のコマンドラインの説明なんですが、PHPでRsync使おうとするといろいろ面倒ですが、albertofem/rsync-lib使うとすごい楽ちんです。単にRsyncのラッパーで中でコマンドラインを生成してshell_exec()しているだけというものですが、とてもシンプルでよくできています。 Packagist@ https://packagist.org/packages/albertofem/rsync-lib Github@ https://github.com/albertofem/rsync-lib インストールと入手 コンポーザーで落としてくるのが楽。すでにコンポーザーの設定している人はコンポーザー自体を落としてくる必要ないです。 php -r "copy...
2018.2.23 金
ショートコードの基本形 本家に全部書いてあるので冗長ですが。 functions.phpに以下を書きます。 /* Short code */ function foobar_func( $atts ){ return "foo and bar"; } add_shortcode( 'foobar', 'foobar_func' ); で、記事中に [foobar] というショートコードを追記します。すると「foo and bar」で出力されます。 ここまでは簡単。foobar_func()で返される値をadd_shortcode()というWordpress特有の関数でショートコードに 引数のあるショートコード 別にextract使う必要もないだろうと思いますが。 function hogeF...
2018.1.20 土
Laravl5ではPOSTのときにCSRFトークンを必ず使うというのがコツというだけでその他は普通のAjaxと同じです。 GETする DEMO GETする際にはCSRFトークンは必要ないので、そのまま返り値を取得するという感じになります。 /* routes */ Route::get('/ajax/get_json', function(){ return view('develop.ajax_get_json'); }); Route::get('/api/ajax/get_json', 'Test\TestController@ajax_get_json'); コントローラからjsonを返してあげるようにすればOKです。いろいろ細かいことやりたいときはresponce()で返してあげれ...
2018.1.19 金
非同期とか何とかちょっと面倒くさいですが、要はブラウザー自体のHTTPリクエストとHTTPレスポンスをJS内部で完結できるってのがAjaxです。ブラウザーのリクエスト&レスポンスとは別で実行されるわけですからGUI的にはスムーズな動きとかが可能ですなんですが、内部はちゃんとリクエストとレスポンスがあるので、適当にやったらものすごいサーバー負荷になったりしますよ。 JavascriptをUIにしてWEBサーバーにアクセスするというだけでAjaxがどうしたこうしたという話ではなく「JavascriptをUIにしてWEBサーバーにアクセスする」ことができるようになった(そういう仕組を頭のよい人が考えてくれた)というものです。 ここではjQueryのAjaxを使っての説明です。 GETでリクエストし...
2017.12.14 木
結構単体で使うことが多いです。Monologはほんといいですよ。 vendorにmonologをおいておいて、monologのクラス作って、それぞれのページでログが必要な際にmonologのclassを呼んで使うみたいな感じになると思います。 Monologのインストール まずはコンポーザーを入れてmonologを単体でひっぱってくるまで。 curl -s http://getcomposer.org/installer | php php composer.phar require monolog/monolog 初期設定 vendor/autoload.phpを読み込んでしまえば殆ど作業は終わりで、logのパスとロギングの内容を書いてゆけば終わり。楽。 <?php require_...
2017.11.8 水
https://ja.netbeans.org/ ダウンロードとインストール Windows版ダウンロード ダウンロードx86でよいかと思います。108MBありました。結構重いですね。Mac版は142MB。いずれにしろインストール自体は簡単でWindowsはexe、Macはdmgで落ちてくるのでそのままインストールするだけです。 Javaで動いているので、 http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html ここから最新のJavaをインストールしておく必要があります。(ここにいくとNetBeansのダウンロードもできるんですね。)とはいえ、なんなんですかねJavaって。イメージ...
2017.10.16 月
xamppのインストールディレクトリの中にphp_soap.dllがあれば、xamppのローカル開発環境でもsoapクライアントは動きます。私のxamppのphpバージョンがPHP 7.1.8にはsoapの設定ができました。 C:\xampp\php\php_soap.dll PHP.ini(C:\xampp\php\php.ini)を開いてコメントアウトされているところを有効化します。 ;extension=php_soap.dll ↓ extension=php_soap.dll 保存して閉じてApacheの再起動。 phpinfoでsoapクライアントが有効になっているか確認します。
2017.9.12 火
ソースをダウンロード 私のxampp環境のPHPが5.6だったので7.1にアップグレード。PHPのバイナリをダウンロードしてきて既存のphpに上書きすればOKです。 http://windows.php.net/download ここら「VC14 x86 Thread Safe (2017-Aug-30 21:35:49)」をzipでダウンロード。2017-09-12時点ではphp-7.1.9-Win32-VC14-x86.zipが落ちてきます。ちなみに「VC14 x86 Thread Safe」以外のものでやってみたら動きませんでした。 既存のPHPに上書き C:\xampp\phpに上書きすればいいだけですが、一応バックアップ取ります。というのはいくつかエラーが出て起動しないとき...
2017.8.16 水
PHPで実行時間を測定するときは、1/1000秒単位で測るので、以下のような感じになります。 $start_time = microtime(true); //何らかのコード $end_time = microtime(true) - $start_time; var_dump($end_time );
2017.7.29 土
Laravelにって話しではなくてComposerの使い方という話しになるかと思います。Composerのインストールは、ComposerでLaravelインストールはここらで見てみてください。 基本的にはcomposer.jsonにパッケージ名を追加するだけということになります。 https://packagist.org/ 最近のプログラマーは自分で何も書かなくていいんじゃないかというぐらい、いろんなパッケージがあります。ダウンロード数が多いものが人気?ということになるんでしょうか。殆ど外人さんなのでちょっとは英語読めないとつらいです。とはいえトップページにパッケージを使う方法と、自分で開発したものをpushする方法がすでに書いてあるので、ということになってます。そんなに難しくない。 検...
2017.7.11 火
PHPで絵文字対処 Formに絵文字入力されると困ってしまう場合4バイト文字を削除でいったん対処。その他いい方法あるんでしょうか。 $text = "EMOJI"; // &#x1f63e;とかの絵文字 $text = preg_replace('/[\xF0-\xF7][\x80-\xBF][\x80-\xBF][\x80-\xBF]/', '', $text); 猫ちゃん絵文字はWordpressの場合は「😾」はエディタ上では &#x1f63e; 自動的に変換されますね。 内部的にどうやっているのか全然調べていませんが、Disable Emojisという絵文字を無効化するプラグインの中身を調べると本体調べるより早そう。 Javascriptで絵文字対処 P...
2017.7.7 金
Class継承に問題ありのPHPがtraitのおかげでいろいろ便利になりました。メソッドとプロパティが何度でも使いまわせるというやつです。ちょっと腑に落ちないのはtrait自身のインスタンスは作れないというところですかね。常にClassからuseするかたちでのみメソッドとプロパティが使えるということになります。 トレイト実装 testTrait.phpを作成します。 <?php // testTrait.php trait testTrait { public function foo() { return "testTrait foo()"; } } Classと全く同じように作ればいいです。これをClassでuseします。 (ものホンのフレームワークとかだったらincludeとかじ...