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

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

Apache + Laravelで.htaccessを弄ってもAccess-Control-Allow-Originが変わらない問題を解決

初めましての方は初めまして。けこです。

この度ちょっとしたAPIサーバを立てる運びになりまして、その際にAccess-Control-Allow-Originの設定を”*”にすることはできません。という内容のエラーに苦しめられましたので、知見を共有させていただきます。(注意:Laravel初学者です)

### 構成等
フロントエンドVue.js、バックエンドLaravel+MySQLという構成です。
フロントエンドはexample.jp、バックエンドはxxx.example.jpというドメインを取っていました。よくあるSPAってやつです。

今回苦戦したのはフロントからバックエンドのAPIサーバ(Laravel)からデータを取るリクエストをする際のAccess-Control-Allow-Origin設定です。

### どんな問題が発生したか?

ドメイン名が完全一致ではない、つまりsame-originではないのでCORS通信の設定が必要です。
今回発生したのはいくら.htaccessを弄ってもAccess-Control-Allow-Originが反映されないという問題です。

元記事を表示

Windowsにてポートを管理するサービスの一部停止

phpのlaravelプロジェクトをやり、sail upコマンドより、立ち上げたら、下記のエラーが発生しました。
理由としては、Windowsにて管理されるポート番号を使うからで、回避方法はポート番号を変更することにより、
簡単に回避はできま。
もしくは、Windowsにてポートを管理するサービスを停止する方法もありました。

“`
Error response from daemon: Ports are not available: listen tcp 0.0.0.0:80: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
“`

しかしながら、セキュリティー面でやりたくないと思って、探してみたら、ライブラリとして、基本提供はしていることがわかりました。
開発者がどうしても、Windowsにてポートを管理されたくない時のためですかね。(笑)

コード: https://github.com/heedaily/ExcludedPortRange

元記事を表示

Laravel9にjwt-authを追加する

# 本記事の目的
Laravel9にjwt-authを追加し、ログインからtokenを送ることでユーザー情報を取得できるまで行う。

# 環境
PHP 8.1.2
Laravel 9.1.0
PHP-Open-Source-Saver/jwt-auth 1.4.1

# 前提条件
Laravel9.0が起動できている。

![Screen Shot 2022-02-21 at 22.05.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/898137/5e4750cb-4ba9-7d64-f797-ddcc825ee965.png)

# パッケージのインストール
composer requireでパッケージをインストールする。

“`
composer require php-open-source-saver/jwt-auth
“`

パッケージの構成ファイルを公開する。

“`
php artisan vendor:publish –provider=”PHPOpenSourceSa

元記事を表示

PHP cookies 更新と反映

$_COOKIEはブラウザ上に**保存された**情報を読み込む。

setcookie関数で情報を更新する際は更新される予定の情報がまだブラウザ上に**保存されていない**(これから保存される。)
よってsetcookie関数が情報を更新する際に$_COOKIEが読み込む情報はこれまでに既に保存されている更新前のcookie情報となる。
上記がsetcookie関数による情報の更新が$_COOKIEに反映されるのにワンアクション遅れる理由。

元記事を表示

【WP】記事投稿時、別のカスタム投稿を自動生成する

カスタム投稿で、記事投稿時に別のカスタム投稿記事を自動生成したかったのでwp_insert_postを使って自動化してみた。

## 環境
WordPress: 5.9
PHP:7.4
MySQL:5.7.32

## サンプルコード
// 投稿オブジェクトを作成
function add_diary(){

// 投稿オブジェクトのパーマリンクを取得
$recent = get_posts(‘post_type=diary’);
if (count($recent) > 0) {
$recent_id = $recent[0]->ID;
$recent_url = get_permalink($recent_id);
echo $recent_url;
}
// 投稿パラメータを指定
$my_post = array(
‘post_title’ => ‘「日記」を更新しました’,
‘post_type’ => ‘news’,
‘post_content’ => $recent_url,
‘pos

元記事を表示

PEAR Crypt_BlowfishをOpenSSLにリプレースする

PHP5.5から7.3へのバージョンアップ作業で、
既存サーバで使用している暗号化ライブラリがPHP7.3で非推奨の Crypt_Blowfish だったため、
推奨されている OpenSSL にリプレースする必要がありました。

# 作成した関数

まずは完成したコードから。

“`php:openssl.php
public function encrypt($plain_text)
{
// 暗号鍵の読込
$pass_phrase = ‘angoukanokagiwoiretene’;

// パディング処理
if ($m = strlen($plain_text) % 8)
{
$plain_text .= str_repeat(“\x00”, 8 – $m);
}

$encrypt = openssl_encrypt(
$plain_text,
‘bf-ecb’,

元記事を表示

VIEWからControllerに値を渡す方法~備忘録~

## viewからcontrollerに値を渡す方法

### ①formを利用する場合
#### input typeをhiddenにすることによって隠しデータとしてフォーム送信

“`
[VIEW]~~.blade.php

    

    
    


“`
“`
[Route]web.php

Route::post(‘/store’, [HomeController::class, ‘store’])->name(‘store’);
“`

“`
[Controller]Homecontroller.php

public functi

元記事を表示

ゲストOS上のApache+PHP環境にて、ソーシャルログイン(LINEログイン)してログインユーザー情報を取得してみました。

ソーシャルログイン(LINEログイン)を触ってみました。
より現実的なソースとするため、セキュリティ対策系の処理も実施しています。
本実装でLINEログイン後に返却される情報は、
ログインユーザーのユーザーID、ユーザーの表示名、プロフィール画像のURLです。
以下の通り、サーバー側はゲストOS上のApache+PHP環境です。

# 本記事の環境
ホストOS:Windows10 Pro 64bit 8GB
ゲストOS:Red Hat Enterprise Linux release 8.3 (Ootpa)
Oracle VM VirtualBox:6.0.4a
vagrant:Vagrant 2.2.14
Apache:2.4.37
PHP:PHP 7.4.15
Tera Term:4.105
Google Chrome:96.0.4664.110
コマンドプロンプト
ホストOS側に実ソース
LINEログイン v2.1

# 注意事項等

* レート制限
LINEログインのAPIに対して短時間に大量のリクエストを送信し、
LINEプラットフォームの動作に影響を与えると判断された場

元記事を表示

crontabでphpが動かない時の対応

AWSのLightsailで構築したサーバ上でExmentを入れています。
特定の時間になったら通知メールを送りたかったのでExmentのマニュアルをもとにcrontabへの設定をしました。

[Exmentマニュアル:タスクスケジュール](https://exment.net/docs/#/ja/additional_task_schedule)

# 問題点
しかし時間になっても通知が来ない。。。
コマンドラインで実行する際によく使う以下の処理でもファイルにエラー内容が残っていません。
他のコマンドだと記録が残るのに。。。

https://webkaru.net/linux/redirect-output-to-file/

# 解決策
ということで結構手間取ってしまいましたが、最終的にphpへのパスの問題でした。

https://kanikuriimkorokke.com/archives/382

上記の記事をもとにprintenvした結果、phpへのパスは通っているのですが、crontab利用時はこのパスは利用しない模様。
でも対応方法はこの記事と同じでcrontab –

元記事を表示

Magento2 The configuration file has changed. Run the “app:config:import” or the “setup:upgrade” command to synchronize the configuration.

## 環境

– PHP 7.4
– Magento 2.4

## エラー

“`
1 exception(s):
Exception #0 (Magento\Framework\Exception\LocalizedException): The configuration file has changed. Run the “app:config:import” or the “setup:upgrade” command to synchronize the configuration.

Exception #0 (Magento\Framework\Exception\LocalizedException): The configuration file has changed. Run the “app:config:import” or the “setup:upgrade” command to synchronize the configuration.

#1 Magento\Framework\App\FrontController\Intercept
元記事を表示

Magento2 メンテナンスモードのオン/オフ

```shell-session # メンテナンスモードオン $ bin/magento maintenance:enable # メンテナンスモードオフ $ bin/magento maintenance:disable ``` メンテナンスモードオンの時にアクセスすると下記の例外が発生する。 ``` 1 exception(s): Exception #0 (Exception): Unable to proceed: the maintenance mode is enabled. Exception #0 (Exception): Unable to proceed: the maintenance mode is enabled.
#1 Magento\Framework\App\Bootstrap->run() called at [pub/index.php:29]

```

- https://devdocs.magento.com/guides/v2.4/install-gde/install/cli/install-cli-sub

元記事を表示

laravelで作成したポートフォリオをherokuでデプロイした

ポートフォリオをherokuでデプロイするために、
まず任意のフォルダを作成→heroku

その後、アップロードしたいherokuファイルを
git clone (url)
でファイルに取り込む。
その際cloneしたファイル以外は削除する。

その後、app/Providers/AppServiceProvider.php
public function boot()
{

\Schema::defaultStringLength(191);

if (\App::environment('production')) {
\URL::forceScheme('https');
}
}

を記述。

次に、
heroku create 作成したい名前 --buildpack heroku/php

コマンドを実行herokuに新規ファイル作成。

その後,
git init

heroku git:remote -a heroku上に作成したファイル名

git add .

git commit

元記事を表示

AWSにデプロイしたポートフォリオをHerokuへ移行しようとしたらかなり苦労した

# 1.はじめに
以前僕は転職活動を行った際に、AWSにデプロイしたポートフォリオを作成しました。
自分なりに頑張って作ったアプリなので、折角だから今後も見れる形で残したいと思いました。
しかし、AWSで公開し続けると、課金が発生してしまいます。
僕の場合は、毎月6500円~7500円くらいかかっていました。(もったいない?)
そこで、無料で利用できるHerokuにデプロイしようと考えました。
AWSからHerokuへの移行作業で、色々と躓いた点があるので、書き残しておきます。

# 2.URL
### ポートフォリオ
##### AWSデプロイURL(近日中に公開停止します)

https://koujigenba.site

↓移行

##### HerokuデプロイURL(起動に少し時間がかかります)

https://koujigenba.herokuapp.com

### GitHub

https://github.com/yuuhei-koutoku/cts-remake

### ポートフォリオ紹介記事

https://qiita.com/Yuhei_K/items

元記事を表示

【Docker】port is already allocatedエラーを解決する方法

これはDockerもよくわかっていない状態だと、非常にハマります。
というか自分はすごいハマりました。

解決する方法は、簡単です。
エラー文の通りに実行するだけです。

### 解決方法
エラー文には、「Portが既に使われているよ」と書いてあるので
使われているポートを調べて、停止して、再度compose up -d をするだけです。

僕は、ひとつひとつポートを停止しては繋げてを繰り返しましたが、もっといい方法があれば教えていただきたいです。

参考記事・これを見ればできます

https://teratail.com/questions/212664

元記事を表示

PHPデフォルト引数値

関数を定義する際にデフォルト値を引数に渡していれば呼び出す際に引数を渡さなくとも渡したデフォルト値が返ってくる。
-->試しにdate()関数から得られる月、日、曜日を渡そうとしたが、エラー。

PHPマニュアル曰く、デフォルト値は定数式でなければならないとのことだったので今後忘れないように気を付ける。
https://www.php.net/manual/ja/functions.arguments.php#functions.arguments.default

元記事を表示

Slim4で新しく作ったプロジェクトでルーティングが解決しない...?

#問題
Slim4であるプロジェクトから複製した別プロジェクト。
namespaceなどを変更して実行しようとしたが、ルーティング箇所でコントローラが見つからないというエラーが発生。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213142/3bc079d7-8892-cc91-47e5-16eeb69039bc.png)

ルーティング(index.phpに記述)の指定はこう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213142/6fa008bb-41b0-f252-83d2-c9e7f0e96698.png)
Controller自身はこんな感じ。(srcディレクトリ直下に配置)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213142/dd5f1b4e-fa96-80c8

元記事を表示

Laravelの謎すぎたエラー「500エラーなのにステータスコード200」

## 現象
Laravelで、エラーが発生しているのに、HTTPステータスコードは200が帰る。

```php
abort(500)
```

でもレスポンス200が帰る。
なんで?nginxの設定???

## 原因と解決

phpファイルの頭に空白行があった・・・

```php

元記事を表示

macOS Monterey バンドルApacheでPHPを使う(PHP-FPM編)

これまでlocalhostで `.php` のファイルを扱っていたけれど、Montereyにしたらブラウザからアクセスしたときにソースが表示されてしまうようになってしまった、という人向けです。

おそらく一番楽であろう、標準で入っているApache + php-fpmを使う方法をご紹介。mod_phpは使いません。

##バンドルされなくなったPHPをインストール
Homebrewからインストールする場合。

```sh
brew install php
```
もしHomebrew未導入であれば、https://brew.sh に書いてあるようにして導入してから上記コマンドたたいてください。

```sh
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```

なおFPM使うには `--enable-fpm` を付けてビルドせよと書いてありますが、普通に `brew install php` すればついてきます。

##PHP-FPM

元記事を表示

確認用ログ

```php
takumikondo@kondoutakuminoMacBook-Pro lara-d % git push origin HEAD
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 411 bytes | 411.00 KiB/s, done.
Total 4 (delta 2), reused 1 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/quest-academia/laravel-posts-training.git

元記事を表示

高機能クレヨンしんちゃん(Vue・PHP)

### Respect for

https://qiita.com/noppefoxwolf/items/b4376392d98cea2446dd

小一時間暇だったので自動ルビ振り機能とかを搭載したクレしんタイトルコールジェネレーターを作ってみたゾ

**https://tools.ic731.net/kureshin/**

## 使い方
アクセスしてテキストボックスに上段と下段に表示したいテキストを入力するゾ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513165/fae09185-5d1a-d2b1-1e8a-79babe5bd245.png)
あとは自動でルビ振りされたテキストがタイトルコール風に表示されるゾ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513165/722c2209-b3b2-527e-fc8b-88a25cd194af.png)

### 仕組み
もう

元記事を表示

OTHERカテゴリの最新記事