PHP関連のことを調べてみた2019年11月16日

PHP関連のことを調べてみた2019年11月16日

値渡しと参照渡し

値渡しと参照渡しについての学習メモ

##値渡し
・変数のコピーを渡す
・変数の中身を書き換えても呼び出し元には影響しない

PHPでは通常、値渡しを使う
引数で指定した変数の値はコピーされて別の変数として仮引数で値を受け取れる。

##参照渡し
・変数の置いてある場所を示し参照してもらう
・変数の中身を書き換えると呼び出し元の変数の中身も書き換わる。

メリット:
高速に動作する(らしい)

デメリット:
多用するとプログラムの流れを追いかけるのが難しくなる

注意点:
定数には使えない

書き方:
&をつける

“`php
function 関数(&$引数)
“`

元記事を表示

WordPress5.3で勝手に画像が縮小されるのを防止!

# ええっ

なんてことを. 自慢の4K画像を上げたら突然縮小されるようになってしまった?

# 解決法

“wp-admin/includes/image.php“ の243行目にある

“`
$threshold = (int) apply_filters( ‘big_image_size_threshold’, 2560, $imagesize, $file, $attachment_id );
“`

をコメントアウトしましょう. これで縮小されないはず?

Updates to Image Processing in WordPress 5.3

https://core.trac.wordpress.org/browser/trunk/src/wp-admin/includes/image.php?rev=46565#L226

元記事を表示

学習のアウトプット #1

#はじめに
なぜQiitaでの投稿を始めたかというと、現在PHP/Laravel絶賛勉強中なのですが教材を見てコードを書いてるばかりで全然アウトプットしておらず、学習のしたことがイマイチ身についてないなぁと感じたからです。

早速アウトプットしていこうと思うのですが、今回はOSについて書こうと思います。

ある時プログラミングを学習していて、**OS**って言葉が目に付いて「あれ、OSってなんだっけ??」と思ったためです。

#OSとは
OSとはオペレーティングシステムの略で、PCを管理・操作するシステムです。
よく聞くのはwindows,macOS,linuxだったり、スマホのiOSやAndroidもOSです。

OSがないとPCは動きません。
昔のゲームに例えるとゲーム機本体があってもソフトがないからゲームできないみたいな感じですかね。

#OSの機能
– **入出力の制御**
キーボードをどのキーを何回押したか、マウスをどの方向にどれだけ動かしたか、などのキーボードやマウスの入出力の制御やモニターの画面表示の機能はOSが担っています。

この機能によって画面にエディタが表

元記事を表示

【Laravel5.8】複数のデータベースに接続するときは全てのモデルに`$connection`を書こう

先日の[Eagerロード先テーブルは必ず主キーもSELECTしないといけない](https://qiita.com/rana_kualu/items/03087d60efd016fb8c4a)って記事を見るとわかりますが、Eagerロードでは複数テーブルを結合するのにJOINを使わず、データを別々に取ってきて後から合体させています。

つまり、これは異なるデータベースのテーブルに疑似リレーションを張れるのでは?

“`php:テーブルA
class TableA extends Model{
// テーブル名
protected $table = ‘table_a’;

/**
* リレーション
* @return BelongsTo
*/
public function tableb()
{
return $this->belongsTo(TableB::class, ‘b_id’, ‘id’);
}
}
“`

“`php:別DBのテーブルB
class TableB extends

元記事を表示

CodeIgniterに独自のログレベルを追加する方法

# 記事作成の経緯

Codeigniterには `log_message()` というログファイルにメッセージを記述する方法がある。

Error Handling
https://codeigniter.com/user_guide/general/errors.html?highlight=log_message#log_message

だが、この仕様が以下の問題を抱えている。

– `$config[‘log_threshold’]` の値により出力されないログがある
(1に設定した場合はERRORしか出力されない)
– INFO, DEBUGにはCodeIgniter自身のログも出力されて読みづらいので、`$config[‘log_threshold’] = 1` としたい。
– 用意されているものが3つ(ERROR, DEBUG, INFO)しかなく、出したいログに相応しい名前を選べない
※例えばメールの送信結果だったら「EMAIL」とか、管理画面のログなら「MANAGE」とかにしたい。

そこで、簡単にカスタムログを出力する方法まとめた。

# 1. Logクラ

元記事を表示

PHP→Pythonの呼び出し時に’ascii’ codec can’t encode characters in position xx-xx: ordinal not in range(128)

Pythonでスクリプト書いて、PHPから呼び出したい。
Python側をコンソール上で動作確認して、
PHPでフロント作って呼び出そうとしたらこれ

“`
‘ascii’ codec can’t encode characters in position 28-32: ordinal not in range(128)
“`

ascii?コンソール上で動くけど?
locale変更してもダメ

試しにpython実行コマンドで

“`
LC_ALL=\”ja_JP.utf8\” python test.py
“`

のように定義したら動いた。

分からんわこんなん。

P.S. 上司ありがとう。

元記事を表示

laravel サーバ環境構築基礎

少なくとも一つのフレームワークを覚えようと思って、複数のフレームワークの中ララベルに興味ありました。
いろいろ調べたところ、テスト環境の情報が多い、サーバ環境構築の情報が少ない、バラバラです。
一応、苦戦二日間やっと構築成功しました、以下に纏めます。共有致します。

この手順で恐らく一発でできそうな感じ。

OS CentOS 6.10 32bit
php5.6.40
laravel5.4
mysql5.6/40
Apache2.2.15

■ composer インストール
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
composer

■ laravel インストール
composer global require “laravel/installer”

■ プロジェクトを作成
composer create-project –prefer-dist laravel/laravel laravelapp

(laravelapp プロジェ

元記事を表示

docker-composeで簡単に環境構築Apache2.4+PHP7.1+PostgreSQL9.6

# 仕事で上記の環境が必要になったので~~もうやりたくない~~備忘録として残す

## 環境

– Mac for Docker
– Apache2.4
– PHP7.1
– PostgreSQL9.6

## 構成

ディレクトリ構成はこんな感じです。

![スクリーンショット 2019-11-15 16.19.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/293438/2993d77c-06f3-6e2c-fc3a-61db24de6bae.png)

## Dockerfile

`docker/web` に `Dockerfile` という名前のファイルを作成し以下の内容で記述

> PHPのバージョンを変えたければFROMの `php:7.3-apache` という風に変えればいけるはず。

“`Dockerfile:docker/web/Dockerfile
FROM php:7.1-apache

COPY ./php.ini /usr/local/etc/php/

RUN s

元記事を表示

mb_strimwidth in PHP

# convenient build-in function

テキストデータを一定の文字数で[…]したい時に便利。
こういうのがあるのは知りませんでした。
勉強不足ですね。

“`php
$text = “春はあけぼの。やうやう(ようよう)白くなりゆく山ぎは(やまぎわ)、少し明(あ)かりて、紫(むらさき)だちたる雲の細くたなびきたる。 春は、明け方(あけがた)が良い。 だんだん、白くなっていく山ぎわが、 少し明るくなって、紫がかった雲が、細くたなびいているのが、”;

echo mb_strimwidth($text,0,120,”…”,”UTF-8″);

//春はあけぼの。やうやう(ようよう)白くなりゆく山ぎは(やまぎわ)、少し明(あ)かりて、紫(むらさき)だちたる雲の細く…
“`
http://php.net/manual/en/function.mb-strimwidth.php

元記事を表示

Laravelでartisanコマンドを自作してCommandを体感する

Laravelを勉強してて、php artisan という不思議なコマンドを何気なく使っていましたが
これを自作できるということで、自作した勉強メモです。

## artisanコマンド一覧を見てみる

まずはどんなコマンドがあるのか見てみることにしました。

“`
php artisan list
“`

このコマンドを使うことで、どんなコマンドが使えるのか、またそのコマンドの説明が表示されます。

“`
Laravel Framework 6.0.4

Usage:
command [options] [arguments]

make
make:channel Create a new channel class
make:command Create a new Artisan command
make:controller Create a new controller class
make:event Create a new event class
make:excep

元記事を表示

dockerイメージphp:7.2-apacheでImageMagickをインストール

## インストールのイメージ
ImagicをインストールするためのImageMagickのインストールが必要。
まずPHPへImageMagicのインストールを行い(※dockerfileへ記述)、その後、Imagicのライブラリをcomposerに追加する。

### インストール方法

php側でimagemagickとimagickのインストールが必要なため、dockerfileに下記を追加。

“`
 && apt-get update && apt-get install -y imagemagick libmagickwand-dev \
 && pecl install imagick \
 && docker-php-ext-enable imagick \
“`

これでbuild後、docker-compose up -d !!!ッッッターーーーーン!!!!

Linux側で、下記コマンドを叩いてImagicのライブラリを追加。

“`
$ composer require spatie/pdf-to-image
$ composer require spat

元記事を表示

docker環境でお試しImageMagickをインストール

### コンテナ立て直すと消えちゃいますッ………ドゥフフッッ………

dockerでOSを汚さずに試しにImageMagick使いたいな〜〜ってときに!
またはUbuntuにImageMagickインストールしたいときに!
コンテナたてるときにインストールしたいのであれば、下記記事を参考にしてください。
※dockerイメージphp:7.2-apacheの環境です><
https://qiita.com/saya1001kirinn/items/dacf5ef6b1d66ced846a

## Ubuntu + Apatcheの環境です。

#### ImageMagickのインストール(パッケージマネージャを使ったインストール)

“`
$ apt-get update
$ apt-get install imagemagick
“`

PECLはPHP拡張モジュールのリポジトリとのことなので使えるとは思いますが、PHPが入ってなければ、または下記コマンド叩いて’command not found’がでたら

“`
$ pecl help
“`

下記コマンドでpeclインス

元記事を表示

[備忘録]XAMPP の PHP の設定

`php` の設定変更についてのメモ

# 動作環境

“`
Windows10 Home Edition
XAMPP 7.2.17
“`

# 設定ファイルのパス

`XAMPP` を `D:\xampp` にインストールした場合、 `php` の設定ファイルは `D:\xampp\php\php.ini` になる

# 設定項目

## タイムゾーン

デフォルトが `Europe/Berlin` なので `Asia/Tokyo` にする

“`
[Date]
date.timezone=Asia/Tokyo
“`

## OPcache

デフォルトでは無効になっているので有効化する
下記を `php.ini` の最後に追記する

“`
[opcache]
zend_extension=D:\xampp\php\ext\php_opcache.dll
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=256
opcache.max_accelerated_files=10000

元記事を表示

初心者がTwitterと連動したサービスを作る 概要編

# 作りたいもの
①ボタンをクリックするとランダムでペンギンの画像が出る
②「ツイートする」ボタンをクリックで出た画像をツイートする

ペンギンの画像にするのは単純にペンギンが好きで撮りためた写真があるから?
~~初心者なんだからサイトや参考書に載ってるもの作ったほうがわかりやすいのでは
→単純にモチベが上がらない…~~

# 自分のスペック
– ディレクション・デザイン・コーディングを広く浅くやるWebデザイナー
– HTML・CSSはそこそこ、JavaScript、PHPは調べながらなんとなく
– 仕事ではmac MAMPを使って構築するので基礎はわかっているつもり

# 構築を通じて学びたいこと
・PHPとJavaScriptに慣れる
・Windowsでコーディングできるようにする
・PHPやサーバーなどの環境構築をできるようにする
・GitHubを使えるようにする

# 不安点
– 他の人のアカウントでツイートするには、認証とか大変かも?
– いきなりTwitterと連携とかプログラミング初心者には難しいのでは?

# まずは段階を踏んで制作してみる
何もわからず突っ走ってボ

元記事を表示

【Laravel】MAIL_DRIVER=sendmail, MAIL_DRIVER=smtp の違い。PHPのmail関数の挙動。

[Laravelのmailableクラスでメール送信を行う[導入/入門編]](https://www.ritolab.com/entry/38)

>smtp
SMTPサーバーから送信する。一般的な送信方法。
sendmail
PHPのmail関数で送信する。

[PHP: mail – Manual](https://www.php.net/manual/ja/function.mail.php)

### mail関数はSMTPから送信していないのか?

[PHP: 実行時設定 – Manual](https://www.php.net/manual/ja/mail.configuration.php)

> php.ini の設定により動作が変化します。

`sendmail_path` に設定しているパスが呼ばれる

Windows環境の場合は`sendmail_path`が設定されていなければ
`SMTP`に設定されているSMTP サーバーのホスト名または IP アドレス(デフォルトではlocalhost)に
`smtp_port`設定で指定したサーバーに接続するポート

元記事を表示

Moodle 3.7 マニュアル – Moodle の移設

[原文](https://docs.moodle.org/37/en/Moodle_migration)

Moodle の移設

あなたの Moodle サイトを移設したい時があるかもしれません。たとえば、標準的なホスティングサービスのサーバから専用サーバへと。

内容

[1 推奨する方法](#1 推奨する方法)
[1.1 メンテナンスモードにする](#11 メンテナンスモードにする)
[1.2 古いサーバ上で Moodle データベースをバックアップする](#12-古いサーバ上で-moodle-データベースをバックアップする)
[1.3 バックアップを新しいサーバにリストアする](#13-バックアップを新しいサーバにリストアする)
[1.4 moodledata を古いサーバから新しいサーバにコピーする](#14-moodledata-を古いサーバから新しいサーバにコピーする)
[1.5 Moodle のコードを古いサーバから新しいサーバにコピーする](#15-moodle-のコードを古いサーバから新しいサーバにコピーする)
[1.6 config.php をあたらしいサーバの

元記事を表示

Magento2の開発環境をDockerで構築する

dockerでMagento2の開発環境を作成しようとしたら、かなり苦労したのでメモ
完成したimageは以下
https://hub.docker.com/repository/docker/hiros1991/php72-apache-magento-develop

**2019/11/15追記**
正直重すぎて使い物にならなかったです。
公式のphp-apacheが結構だめなやつ7日もしれないので、centos環境で作り直します。

## 環境
– docker for mac
– docker-sync(これが結構大事)
– php:7.2-apache (公式イメージ)

## docker-syncについて

通常のvolumeだとかなり読み込みが遅くなるので使用しました。
以下を参考にしました。
https://qiita.com/pocari/items/0340049742927f3a94b7

## Dockerfile

“`dockerfile
FROM php:7.2-apache AS dev

RUN apt-get update -qqy && ap

元記事を表示

5分で作るPHP開発環境(Docker-compose)

PHPの開発環境が欲しくて色々調べたところ、XAMPPなんて便利なものがあるらしい。
ただここはインフラエンジニアらしくdockerで作ることにした。
ネットに散々ナレッジは落ちてるが、環境が違ったり情報が古かったりと中々動いてくれなかったので、トラシューなども含めてメモしておく。
###動作検証環境
– macOS
– Sierra vr10.12.6
– docker
– Docker version 19.03.1
– docker-compose
– docker-compose version 1.24.1

## いいから早くさわらせろ
###コンテナの起動
https://github.com/yuto-miyazawa/Docker-Compose
詳しくはREADMEを参照。
前提としてdocker,docker-composeコマンドは入れておくこと。

1.上記のgitリポジトリをお手元にclone
2.カレントディレクトリを「lamp」移動
3.下記のコマンドでコンテナを起動

“`
docker-compose up -d

元記事を表示

リファクタ

“`php

if ($comicTrial->is_published) {
$webUrl = config(‘const.web_base_url’) . ‘/comic/comic_trial/’ . $comicTrial->slug . ($isMobile ? ‘?force_sp=1’ : ”);
return redirect($webUrl, 302, [], true);
}

$previewToken = $previewTokenRepository->createOrUpdate(‘comic_trial’, $comicTrial->slug);

$previewUrl = config(‘const.web_base_url’) . ‘/comic/comic_trial/’ . $comicTrial->slug . ‘?token=’ . $previewToken->token . ($isMobile ? ‘&force_sp

元記事を表示

PHPページの入力フォームでキーワード確定に使用するキー

モバイルアプリ入力フォーム画面でキーワードフィールドへの入力内容の確定に全角カンマ「、」を半角カンマ「,」の代わりに使う方法ご存知ですか。英語圏は半角カンマで機能しているそうですが、全角対応がPCで可能になったのですが、モバイルが機能せず、かつ海外の開発者再度の日本語入力画面では、全角カンマが機能するように修正されています。同様の事例で解決した事あるかたアプローチをシェアいただけないでしょうか。

元記事を表示

OTHERカテゴリの最新記事