PHP関連のことを調べてみた2022年10月21日

PHP関連のことを調べてみた2022年10月21日

Xfree(php)でデータベース連携してデプロイする方法。

先日作ったtodoアプリをXfreeを使ってデプロイしたので、
デプロイ方法とその時の注意点についてまとめたいと思う。

▼1

1.Xfreeにログインする。
2.管理パネルページよりPHP・MySQLの管理パネルでログインをする。
3.サーバー管理パネルのPHP・MySQLサーバーよりデータベースのMySQL設定をクリック
4.「MySQL追加」 のデータベース名、文字コードを作成
5.「MYSQLユーザ設定」の ユーザ名、パスワード
6.「phpmyadmin」をクリック
※phpmyadminは動き遅いため、注意が必要です。
7.普段使いしているMySQLからデータベースをExportする
8.ExportしたSQLをXfreeのSQLに流し込む。
      ※Xfreeのphpmyadminはバージョンが古いため、下記の2点の変更が必要。
        ・SQL内の「utf8mb4」 → 「utf8」に変更する。
         /*!40101 SET NAMES utf8 */;へ変更する
      ※「current_timestamp」は

元記事を表示

php require,require_once

phpでのrequire とrequire_onceの違い


require …ファイルを読み込み、読み込めなければエラー
require_once … ファイルを一度だけ読み込み、読み込めない時は処理を中止


親クラスのファイルを読み込むときはrequire_onceを使う。

なぜそうなるのか気になるが…
分かる方教えてほしいです。

元記事を表示

久しぶりの開発案件に参加してみて

# 経歴について


## 1社目
新卒として自社開発会社に入社(2年半在籍)
PHP(CakePHP 1)を使用したWeb開発を実施
規模が少なくコーディング規約などもなかった。
※良く言えば自由に開発が行える。


## 現在
PHP(CakePHP 4)を使用したWeb開発を実施
規模は変わらないがコーディング規約などがしっかり決まっている。
そして、静的解析ツールなどをきちんと導入されている。


## 今回の案件で初めて触れた技術
– Git
– 静的解析ツール(PHPStan)
– コードフォーマット(PHP-CS-Fixer)
– Redmine


## 静的解析ツール(PHPStan)
### 検知できる問題点
1. 存在しないクラスをインスタンス化している。
2. 存在しないメソッド、関数を呼び出している。
3. 参照しているクラス名の大文字小文字が定義と異なる。
4. メソッド仮引数とメソッド呼び出し実引数の型が一致しない。
5. メソッドに型宣言が指定されていない。
※型チェックをしてくれる優れものという認識です。

https://ph

元記事を表示

エンジニア1年生奮闘記

## はじめに
都内の受託開発企業でWEBエンジニアとして働いている**まさきち**といいます。

異業種からWEB系エンジニア転職して1年が経ちますので、これまでを振り返りながら、経験したことや学んだこと、取り組んできたことについて話そうと思います。

## 目次
– この記事の対象読者
– 書いた人について
– 入社後の流れ
– 研修
– 保守業務
– 新規開発
– 身についたこと
– 技術力
– 報連相力
– 課題解決能力
– 取り組んで良かった事
– アウトプット(技術記事、アプリ作成、SNSでの発信)
– 社外エンジニアとの交流(勉強会参加、LT会参加)
– WEB系エンジニア転職を目指している方達へ
– みなさまからの質問
– 終わりに

## この記事の対象読者
– WEB系エンジニアを目指そうと思っている方
– エンジニアなりたての方
– 最近の駆け出しエンジニアの動向を知りたい方

## 書いた人について
エンジニアに転職する前は、製造業で自動車関連の部品の設計、製作を行なっておりました。
IT技術の進化

元記事を表示

ubuntu 22.04環境にnginx + php-fpmでLaravelアプリケーションを構築

# 概要

サーバにインストールしたUbuntu 22.04環境で本番向けのLaravelアプリケーションを動かします。

nginxはhttpのウェブサーバで、php-fpmとはPHPのCGI(ウェブサーバでスクリプトを実行して、動的コンテンツを生成する仕組み)です。
今回はnginxをウェブサーバとして動かして、php-fpmと連携させることでLaravelのアプリケーションが動作するようにしていきます。

今回は、dockerなどのコンテナは使用せずに、ubuntu上に直接必要なソフトウェアをインストールしていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/70029/b1646470-3bd5-9fda-6215-1577ddfba5bc.png)

# 必要なパッケージのインストール

## nginxのインストール

“`bash
$ sudo apt update
$ sudo apt install nginx
“`

## PHPのインストール

“`

元記事を表示

Python,Ruby,PHP,Java,JavaScript,PerlのMySQLの比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,PerlのMySQLの比較

# Python

https://qiita.com/ab-boy_ringo/items/f05bb6329f51e1632965

# Ruby

https://qiita.com/hukuro310/items/ec91beaecd11157e0640

# PHP

https://qiita.com/ab-boy_ringo/items/8274c66b6692966fdc55

# Java

https://qiita.com/namari/items/50d9aac0faf6b7e7b314

# JavaScript

https://qiita.com/PianoScoreJP/items/7ed172cd0e7846641e13

# Perl

https://perlzemi.co

元記事を表示

Laravel で ルーティングしたら Invalid route action: []. で怒られた

# エラー時の状況

Laravel で ADR の設計で REST API の開発をしているとき、Action を `routes/api.php` にルーティングを設定したら怒られたので備忘録。

“`
UnexpectedValueException

Invalid route action: [App\Http\Actions\Todo\GetAction].

`App\Http\Actions\Todo\GetAction` was not found.
Controller class `App\Http\Actions\Todo\GetAction` for one of your routes was not found. Are you sure this controller exists and is imported correctly?
“`

エラーログの内容を要約すると以下の通りです。

– Action が無効だよ
– `App\Http\Actions\Todo\GetAction` は存在しないよ、ちゃんとインポートしている?

## 環境

元記事を表示

【PSR-4 Autoload】第三回 composerからautoloadを利用

## この記事でできるようになること :muscle:
【第一回】 autoloadの概要を理解
【第二回】 仕組みを理解したうえでautoloadを実装
**【第三回】 composerからautoloadを利用**
## そもそも… :thinking:
### Composerとは :mag_right:
#### 概説
PHPのプロジェクトで使用するライブラリ・パッケージの管理(インストール・アップデート等)を単一のファイル(`composer.json`)から一括で行えるツールです。
ComposerにはAutoload機能も用意されており、自作Autoloadクラスを作らなくてもファイルの自動読み込みを実現することが可能になります。便利ですね。
>Composer is a tool for dependency management in PHP. It allows you to declare the libraries your project depends on and it will manage (install/update) them for y

元記事を表示

OAuth 2.0 Server PHP と Google OAuth2.0 Playground を接続する

# 1.はじめに

 本稿は[OAuth 2.0 Server PHPを使ってサーバー認証をやってみる。](https://qiita.com/SSaitou/items/1dc9e67f420c6bf5acd1 )の続きです。本稿ではとりあえず作ったOAuth2.0 PHP Serverが外部からの呼び出し(ここではGoogleサービス)に対して適切に動作しているか確認してから、その上で動作するアプリ作成に入ろう、という目論みです。というか、[Googleのドキュメント](https://developers.google.com/assistant/smarthome/develop/create )を追って行ったらいつの間にか[Google OAuth2.0 Playground](https://developers.google.com/oauthplayground/ )にさ迷いこんでいたというのが正直なところで、今となってはどこから入り込んだのか解りません。ただ、OAuth2.0サーバー認証のみの確認ができるので結果的にはとても良かったです。サービスアプリ(みたいなもの)

元記事を表示

PHP 8.0 + Laravel 6.x でSoapClient使うとエラーになるみたい

# 概要
表題の通り、PHP 8.0 + Laravel 6.x でSoapClient使うとエラーになるみたい

# 詳細
[Laravelのサポートポリシー](https://readouble.com/laravel/8.x/ja/releases.html#support-policy)見る限り、Laravel 6.x でも PHP8.0使えるっぽいけど…

PHP 8.0 にしたら、SoapClient使ってるとこで
“`
include(): Failed opening ‘/home/runner/work/hoge/vendor/composer/../phpunit/phpunit/src/Framework/ExceptionWrapper.php’ for inclusion (include_path=’.:/usr/share/php’)
“`
的なエラーが出ちゃう

# 対策
Laravel 7.x までアップしたら解決。
※ Laravel 7.x もサポート切れてるから…ちゃんとアップしようね

元記事を表示

[PHP] readfileでcsvをダウンロードさせると余計なものが挿入される

# 何が起きたのか
webアプリケーション上でcsvダウンロードボタンを作った。
動いたものの、元のcsvファイルデータと一緒にPHPの警告や、htmlソースがデータ化されてしまっている。。。
| column_1 | column_2 |
|:———–|————:|
|1|tree|
|2|mono|
|3|ace|
|4|believe|
|\|||
|\|||

# 解決した

“`diff_php
$filename = ‘child.csv’;
$csvFilename = ‘/tmp/child.csv’;

header(‘Content-Type: application/stream’);
header(‘Content-Disposition: attachment; filename=’.$fileName);
header(‘Content-Length: ‘.filesize($csvFileName));
readfile($csvFileName);
– un

元記事を表示

apacheで現在のフォルダをサーブしたい

# 経緯
apacheサーバーで運用している開発案件に参画
apacheじゃ無いと、jqueryの読み込み順序がバグる。
.htaccessも使いたい。
でも、docker-composeとか毎回書くのだるい。

### やりたいこと
apacheでコマンド1つで現在ディレクトリを配信するサーバーを構築したい。

# 解決策
`serve`とコマンドを打つと、apacheのdockerコンテナが起動するようにfish functionを作った。
zshやbashでも同じように作れると思う。

“`bash:tree
# ~/.config/fish/functions
.
├── serve
│ └── Dockerfile
└── serve.fish
“`
“`Dockerfile:~/.config/fish/functions/serve/Dockerfile
FROM php:7.0-apache

RUN a2enmod rewrite proxy proxy_http
“`
“`fish:~/.config/fish/functions/serve.fi

元記事を表示

user登録者毎に画面表示させる方法

「id」を使って、各ユーザー毎に画面表示させる方法を学習したので、皆さんに共有します。

当初の遷移方法は
reg.php(登録画面) → reg_list.php(登録一覧画面) となる。

reg.php(入力画面)
“`php

               

日付:

Python,Ruby,PHP,Java,JavaScript,PerlのSQLiteの比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,PerlのSQLiteの比較

# Python

https://qiita.com/flcn-x/items/69481d31211421e21f21

# Ruby

https://qiita.com/akito_tameto/items/868e3805dc01c7bef6ef

# PHP

https://qiita.com/39_isao/items/a5b4940138bced936de0

# Java

https://qiita.com/tsweblabo/items/39bdd73a910417a9a8df

# JavaScript

https://qiita.com/zaburo/items/a155cbc02832b501a8dd

# Perl

https://perlzemi.com/blog/20

元記事を表示

【Docker Compose】固定IPの割りあてとhostsの編集

## はじめに
ローカル開発環境を構築するにあたり固定IPを設定し、`hosts`ファイル を編集する必要があったため、その手順を備忘録として残します。

`docker-compose.yml` に以下を追記する
* IPアドレスを固定する: ネットワーク(`networks`)を追加
* コンテナの `/etc/hosts` を編集する: `extra_hosts` を追加

コンテナ起動後、各コンテナに入り固定IPが設定されているか, `/etc/hosts` が編集されているか確認
“`bash
# コンテナに入る
docker compose exec <コンテナ名> bash

# コンテナ内で以下コマンド実行
hostname -i
cat /etc/hosts
“`

## 設定例

“`docker-compose.yml
services:
php:
container_name: php
build: ./docker/php
volumes:
– ./server:/var/www
networks:

元記事を表示

php artisan migrate実行時のエラー

php artisan migrate

Illuminate\Database\QueryException

could not find driver (SQL: select * from information_schema.tables where table_schema = ****** and table_name = migrations and table_type = ‘BASE TABLE’)

試すこと:

“`php artisan cache:clear“`

`php artisan config:clear`

`php -m`
(pdo_mysqlが入ってるかどうかを確認する)

参考記事:
(Laravel)マイグレーション時、could not find driver のエラー
https://hara-chan.com/it/infrastructure/docker-laravel-migration-could-not-find-driver/#could_not_find_driver

最後解決
https://qi

元記事を表示

Laravelで「Expected name to be a non-empty string.」というエラーが発生した件のメモ

## 備忘
– 2022/10/16くらいからLaravel開発環境で突然「Expected name to be a non-empty string.」というエラーが発生し、artisanコマンドがいっさい実行できなくなった。
– 調べていくとCI/CDで実行している`composer update`の結果「vlucas/phpdotenv」というライブラリのアップデートが行われたことがわかった。(v5.4.1 => v5.5.0)
– [GitHub](https://github.com/vlucas/phpdotenv/commit/4c165455a670005a05edbdf97a5590aa3e4936ec#diff-2eedf850c12a444af660cf1ff97e8449b140a2be8646c2c857a7f95afc195cc7R62)を見ると、AdapterRepository.phpに環境変数名の空チェックロジックが追加されていることがわかった。
– env()メソッドに渡す環境変数名が空の場合、いままではスルーされていたが、例外をスローするようにな

元記事を表示

【 #ゆめみからの挑戦状 ★第7弾】解答の紹介と総括

# はじめに
最近弊社ゆめみでは, Twitter にて「ゆめみからの挑戦状」という企画を定期開催しています.
ゆめみの社員がプログラミングに関する問題を出して,皆さんに引用リツートで答えていただく,というものです.
歴代の出題者として Qiita でも有名な @Yametaro や @mpyw などがおりますが,今回は私が出題させていただきました!
本記事は,問題,想定解やその他皆さんからいただいたオモシロ回答などをご紹介します.

# 問題

“`php: 問題

元記事を表示

Python,Ruby,PHP,Java,JavaScript,PerlのC言語拡張の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,PerlのC言語拡張の比較

# Python

https://qiita.com/pocokhc/items/836a3596df5facd00824https://qiita.com/nabion/items/594fb3316583130a636e

# Ruby

https://qiita.com/suketa/items/ab6b88093de4a54b3b06

# PHP

https://qiita.com/takeyoshi-k/items/2a993eefbe06be047eff

# Java

https://qiita.com/tobita_yoshiki/items/0400f7e393fc0ba2d0cb

# JavaScript

https://qiita.com/mokomium/items/57

元記事を表示

連想配列内の1つの値(配列)のみ階層を深くする方法

## 概要
業務で連想配列内の一部の値のみ、階層を深くする必要のある実装を行う必要がありました。今までは、`パターン1`のやり方で実装しておりましたが、`リーダブルコード`を読んでから、質が高く綺麗で分かり易いコードを書くにはどうしたら良いんだ考えており、`パターン1`の書き方は絶対に使いたくありませんでした。
なかなか、色々な記事を調べてもヒットしなくて途方に明け暮れておりましたが、急に閃いて実装ができました。
もし、同じ様な悩みをお持ちの方がいらっしゃるかもしれないと思い、記事に残しました。

“`php
// パターン1(以前までの書き方)
$test[‘sample’][‘level1’][‘level2’] = ‘test1’;
$test[‘sample’][‘level1-1’] = ‘test2’;
$test[‘sample’][‘level1-1-1’] = ‘test3’;
“`

– 連想配列内に`key`と`value`を記述配列を用意するだけで、1つだけ階層の深い連想配列を分かり易い書き方で表現できます。
“`php
// パターン2(新しい書き方)

元記事を表示

OTHERカテゴリの最新記事