PHP | No pain,No gain. https://ufirst.jp/memo Fri, 19 Jan 2024 02:46:39 +0000 ja hourly 1 https://wordpress.org/?v=6.9.4 https://i0.wp.com/ufirst.jp/memo/wp-content/uploads/2022/08/apple-touch-icon-76x76-precomposed.png?fit=32%2C32&ssl=1 PHP | No pain,No gain. https://ufirst.jp/memo 32 32 126496119 DockerでPHPを実行する https://ufirst.jp/memo/2024/01/docker%e3%81%a7php%e3%82%92%e5%ae%9f%e8%a1%8c%e3%81%99%e3%82%8b/ https://ufirst.jp/memo/2024/01/docker%e3%81%a7php%e3%82%92%e5%ae%9f%e8%a1%8c%e3%81%99%e3%82%8b/#respond Fri, 19 Jan 2024 02:46:37 +0000 https://ufirst.jp/memo/?p=3855 ホストにPHPをインストールしたくない場合次のようにDockerを使用してPHPを実行する

docker run --rm -it  -v $(pwd):/app/ php:latest /bin/bash

cd /app
php xxxx.php
]]>
https://ufirst.jp/memo/2024/01/docker%e3%81%a7php%e3%82%92%e5%ae%9f%e8%a1%8c%e3%81%99%e3%82%8b/feed/ 0 3855
PHP Fatal error: Uncaught Error: Call to undefined function pg_connect() https://ufirst.jp/memo/2022/08/php-fatal-error-uncaught-error-call-to-undefined-function-pg_connect/ https://ufirst.jp/memo/2022/08/php-fatal-error-uncaught-error-call-to-undefined-function-pg_connect/#respond Mon, 08 Aug 2022 14:42:38 +0000 https://ufirst.jp/memo/?p=3581 PHPでPostgresqlへ接続のさい、以下のエラーが発生

PHP Fatal error:  Uncaught Error: Call to undefined function pg_connect() 

pg_connectがインストールされていないか有効になっていない

CentOS7の場合は以下にてインストールしApache再起動で問題解決

# yum install --enablerepo=remi-php80 php-pgsql
または次を実行する
# yum install --enablerepo=remi-php80 php80-php-pgsql

※PHPのバージョンは環境によって変更ください。
]]>
https://ufirst.jp/memo/2022/08/php-fatal-error-uncaught-error-call-to-undefined-function-pg_connect/feed/ 0 3581
PHPでハイフンのあるオブジェクト名を使いたい場合 https://ufirst.jp/memo/2022/06/php%e3%81%a7%e3%83%8f%e3%82%a4%e3%83%95%e3%83%b3%e3%81%ae%e3%81%82%e3%82%8b%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e5%90%8d%e3%82%92%e4%bd%bf%e3%81%84%e3%81%9f%e3%81%84%e5%a0%b4/ https://ufirst.jp/memo/2022/06/php%e3%81%a7%e3%83%8f%e3%82%a4%e3%83%95%e3%83%b3%e3%81%ae%e3%81%82%e3%82%8b%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e5%90%8d%e3%82%92%e4%bd%bf%e3%81%84%e3%81%9f%e3%81%84%e5%a0%b4/#respond Wed, 29 Jun 2022 00:52:47 +0000 https://ufirst.jp/memo/?p=3567 波括弧を使い指定する事でハイフン文字列を使ったオブジェクト名を使用する事が出来る。

$obj->name-id // error
$obj->{'name-id'} // OK

]]>
https://ufirst.jp/memo/2022/06/php%e3%81%a7%e3%83%8f%e3%82%a4%e3%83%95%e3%83%b3%e3%81%ae%e3%81%82%e3%82%8b%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e5%90%8d%e3%82%92%e4%bd%bf%e3%81%84%e3%81%9f%e3%81%84%e5%a0%b4/feed/ 0 3567
PHPでHTMLをSimpleXMLElementに変換して使用する https://ufirst.jp/memo/2022/06/php%e3%81%a7html%e3%82%92simplexmlelement%e3%81%ab%e5%a4%89%e6%8f%9b%e3%81%97%e3%81%a6%e4%bd%bf%e7%94%a8%e3%81%99%e3%82%8b/ https://ufirst.jp/memo/2022/06/php%e3%81%a7html%e3%82%92simplexmlelement%e3%81%ab%e5%a4%89%e6%8f%9b%e3%81%97%e3%81%a6%e4%bd%bf%e7%94%a8%e3%81%99%e3%82%8b/#respond Sun, 12 Jun 2022 14:14:28 +0000 https://ufirst.jp/memo/?p=3547 DOMDocumentでもDOMの操作は出来るがSimpleXMLElementで使いたい場合は以下のようにする

	$contents = file_get_contents($targetURL);
	$dom = new DOMDocument();
	@$dom->loadHTML($contents);
	$xml = simplexml_import_dom($dom);
	print_r($xml);

]]>
https://ufirst.jp/memo/2022/06/php%e3%81%a7html%e3%82%92simplexmlelement%e3%81%ab%e5%a4%89%e6%8f%9b%e3%81%97%e3%81%a6%e4%bd%bf%e7%94%a8%e3%81%99%e3%82%8b/feed/ 0 3547
PHPでスクレイピングのやり方メモ https://ufirst.jp/memo/2022/06/php%e3%81%a7%e3%82%b9%e3%82%af%e3%83%ac%e3%82%a4%e3%83%94%e3%83%b3%e3%82%b0%e3%81%ae%e3%82%84%e3%82%8a%e6%96%b9%e3%83%a1%e3%83%a2/ https://ufirst.jp/memo/2022/06/php%e3%81%a7%e3%82%b9%e3%82%af%e3%83%ac%e3%82%a4%e3%83%94%e3%83%b3%e3%82%b0%e3%81%ae%e3%82%84%e3%82%8a%e6%96%b9%e3%83%a1%e3%83%a2/#respond Sat, 11 Jun 2022 15:41:04 +0000 https://ufirst.jp/memo/?p=3544 すぐ忘れるのでメモ

<?php
$contents = file_get_contents('取得したいURL');
$dom = new DOMDocument();
@$dom->loadHTML( $contents );
$xpath = new DOMXpath( $dom );
echo $xpath->query( 'xPath文字列' )->item(0)->nodeValue;
?>

loadHTMLで@を付けているのは構文エラーがあるとWarningが発生し処理が停止してしまうため

以上

]]>
https://ufirst.jp/memo/2022/06/php%e3%81%a7%e3%82%b9%e3%82%af%e3%83%ac%e3%82%a4%e3%83%94%e3%83%b3%e3%82%b0%e3%81%ae%e3%82%84%e3%82%8a%e6%96%b9%e3%83%a1%e3%83%a2/feed/ 0 3544
Webアプリからメールを送信するさいの注意点 https://ufirst.jp/memo/2022/03/web%e3%82%a2%e3%83%97%e3%83%aa%e3%81%8b%e3%82%89%e3%83%a1%e3%83%bc%e3%83%ab%e3%82%92%e9%80%81%e4%bf%a1%e3%81%99%e3%82%8b%e3%81%95%e3%81%84%e3%81%ae%e6%b3%a8%e6%84%8f%e7%82%b9/ https://ufirst.jp/memo/2022/03/web%e3%82%a2%e3%83%97%e3%83%aa%e3%81%8b%e3%82%89%e3%83%a1%e3%83%bc%e3%83%ab%e3%82%92%e9%80%81%e4%bf%a1%e3%81%99%e3%82%8b%e3%81%95%e3%81%84%e3%81%ae%e6%b3%a8%e6%84%8f%e7%82%b9/#respond Fri, 18 Mar 2022 02:28:55 +0000 https://ufirst.jp/memo/?p=3474 前提:CentOS7 / PHP8 / Postfix

Webアプリでメールを送信するさい、色々と注意点があり、ミスするとメールが送れない。

基本的には /var/log/maillog にすべて処理内容が記載されているので、これを見ながら作業すれば問題ない。

1.メールのfrom , Message_idを一致させる。

2.SPFの設定
DNSレコードに以下を追加(IPv4のみ利用する前提)

example.jp.  IN SPF "v=spf1 ip4:*.*.*.* -all"

3.hostname とメールfromのドメインを一致させる

4.Postfix の設定

ipv4のみ利用する場合は /etc/postfix/main.cf へ以下を記述

#inet_protocols = all
inet_protocols = ipv4

5.メール暗号化
Gmailなどは平文でメールを送信する受信者へ警告が出る。/etc/postfix/main.cfへ以下の記述を追加し可能な場合は暗号化しメールを送信する

smtp_tls_security_level = may

6.送信サーバーのIPアドレスがブラックリストに入っていないか確認する
もしブラックリストに入っている場合はmaillogへその旨記載されているので、解除申請を行う。

7.送信されていても受信者側の迷惑メールへ分類されている場合がある

]]>
https://ufirst.jp/memo/2022/03/web%e3%82%a2%e3%83%97%e3%83%aa%e3%81%8b%e3%82%89%e3%83%a1%e3%83%bc%e3%83%ab%e3%82%92%e9%80%81%e4%bf%a1%e3%81%99%e3%82%8b%e3%81%95%e3%81%84%e3%81%ae%e6%b3%a8%e6%84%8f%e7%82%b9/feed/ 0 3474
IntelliJ IDEA/Php Storm /Web StormなどJetBrains製品のターミナルでWSL2を使う方法 https://ufirst.jp/memo/2021/08/post-2985/ https://ufirst.jp/memo/2021/08/post-2985/#respond Wed, 04 Aug 2021 05:47:28 +0000 https://ufirst.jp/memo/?p=2985 IntelliJ IDEAなどJetBrains製品ではIDE内でターミナルを利用する事ができて便利なのだが、デフォルトでは古き cmd.exeが起動するという仕様で色々使いづらい

昨今のWindowsはWSL2(Windows Service for linux)といってWindowsの中にLinuxカーネルが導入されてしまった。これを使ったディストリビューションもいくつか存在しており手軽にUbuntuなど利用できる。

という事で IntelliJ IDEAなどJetBrains製品のターミナルをLinuxのbashみたいにする方法をメモしておく

PHPStormの場合

ctl + alt + s で設定画面を起動し下図の通りShell Pathを設定すればOK
]]>
https://ufirst.jp/memo/2021/08/post-2985/feed/ 0 2985
CentOS7 + PHP7.3の環境構築 https://ufirst.jp/memo/2019/03/centos7-php7-3%e3%81%ae%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89/ https://ufirst.jp/memo/2019/03/centos7-php7-3%e3%81%ae%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89/#respond Mon, 18 Mar 2019 13:22:47 +0000 https://ufirst.jp/memo/?p=1951 # Apacheインストール
– epelのインストール
yum install epel-release
– epelはデフォルトでは無効にする
vi /etc/yum.repos.d/epel.repo
[epel]
enabled=0
– Apacheの最新版をインストールするためにIUSのリポジトリをインストールする
yum install https://centos7.iuscommunity.org/ius-release.rpm
デフォルトから外す
vi /etc/yum.repos.d/ius.repo
[ius]
enabled=0
– 依存ライブラリの事前インストール
yum –enablerepo=epel install nghttp2
yum install mailcap
yum install perl
yum install libdb-devel
– Apacheをインストールする
yum –disablerepo=base,extras,updates –enablerepo=ius install httpd
– Apacheのバージョンを確認する
httpd -v
Server version: Apache/2.4.37 (IUS)
Server built: Jan 9 2019 10:20:01

– Apacheのその他モジュールのインストール
yum install openldap-devel expat-devel
yum –disablerepo=base,extras,updates –enablerepo=ius install httpd-devel mod_ssl
– Apacheを起動する
systemctl start httpd
– ブラウザでApacheの起動を確認
http//ipアドレス
It works!
が表示されていれば問題なし
– ApacheをOS起動時に自動起動する
systemctl enable httpd
– Apacheの環境設定
vi /etc/httpd/conf/httpd.conf
Options Indexes FollowSymLinks

Options FollowSymLinks
AllowOverride None

#AllowOverride All
AddDefaultCharset UTF-8

#AddDefaultCharset UTF-8
– セキュリティ対策
vi /etc/httpd/conf.d/security.conf
ServerTokens Prod
Header always unset X-Powered-By
TraceEnable off
– Apache 再起動
systemctl restart httpd
– DocumentRootを外付けHDDにする
mkdir /media/hdd/www
mkdir /media/hdd/www/html
cd /var
mv www www_
ln -s /media/hdd/www www
– httpd ログを外付けHDDにする
cd /var/log/
mv httpd/ httpd_
ln -s /media/hdd/httpd_log/ httpd
chmod 777 httpd
再起動
systemctl restart httpd
# PHPインストール
– 依存ライブラリのインストール(libargon2.so)
wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libargon2-20161029-2.el7.x86_64.rpm
rpm -Uvh libargon2-20161029-2.el7.x86_64.rpm
– remi リポジトリをインストール
yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
– PHP7.3をインストール
yum install –enablerepo=remi,remi-php73 php
– 拡張ライブラリをインストール
yum install –enablerepo=remi,remi-php73 php-devel php-mbstring php-pdo php-gd
yum install –enablerepo=remi,remi-php73 php-pgsql
– PHP の環境設定
vi /etc/php.ini
date.timezone = “Asia/Tokyo”
memory_limit = 512MB
upload_max_filesize = 8M
expose_php = Off
– 動作確認
vi /var/www/html/index.php
以下を記載

ブラウザでアクセス
phpinfoが実行されればOK
不要ファイルなので削除する
rm /var/www/html/index.php

]]>
https://ufirst.jp/memo/2019/03/centos7-php7-3%e3%81%ae%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89/feed/ 0 1951
PHPのimagecreatefromjpeg関数でエラー https://ufirst.jp/memo/2018/07/php%e3%81%aeimagecreatefromjpeg%e9%96%a2%e6%95%b0%e3%81%a7%e3%82%a8%e3%83%a9%e3%83%bc/ https://ufirst.jp/memo/2018/07/php%e3%81%aeimagecreatefromjpeg%e9%96%a2%e6%95%b0%e3%81%a7%e3%82%a8%e3%83%a9%e3%83%bc/#respond Mon, 23 Jul 2018 08:08:26 +0000 https://ufirst.jp/memo/2018/07/23/php%e3%81%aeimagecreatefromjpeg%e9%96%a2%e6%95%b0%e3%81%a7%e3%82%a8%e3%83%a9%e3%83%bc/

ERROR – 2018-07-23 16:22:06 –> Severity: Warning –> imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Invalid SOS parameters for sequential JPEG

原因はjpegファイルが大きすきたためっぽい

]]>
https://ufirst.jp/memo/2018/07/php%e3%81%aeimagecreatefromjpeg%e9%96%a2%e6%95%b0%e3%81%a7%e3%82%a8%e3%83%a9%e3%83%bc/feed/ 0 1699
Windowsで解凍しても文字化けしないようMacのzip圧縮率ツール https://ufirst.jp/memo/2018/01/windows%e3%81%a7%e8%a7%a3%e5%87%8d%e3%81%97%e3%81%a6%e3%82%82%e6%96%87%e5%ad%97%e5%8c%96%e3%81%91%e3%81%97%e3%81%aa%e3%81%84%e3%82%88%e3%81%86mac%e3%81%aezip%e5%9c%a7%e7%b8%ae%e7%8e%87%e3%83%84/ https://ufirst.jp/memo/2018/01/windows%e3%81%a7%e8%a7%a3%e5%87%8d%e3%81%97%e3%81%a6%e3%82%82%e6%96%87%e5%ad%97%e5%8c%96%e3%81%91%e3%81%97%e3%81%aa%e3%81%84%e3%82%88%e3%81%86mac%e3%81%aezip%e5%9c%a7%e7%b8%ae%e7%8e%87%e3%83%84/#respond Tue, 16 Jan 2018 22:51:21 +0000 http://ufirst.jp/memo/?p=1392 https://github.com/macyarounanoka/mac-zip-windows
日本語が含まれているファイル名をMac標準のzipコマンドで、圧縮するとMacでしか使わない変なファイたちやWindowsで文字化けが発生する場合がある。
今後は上記を使うことにしよう。

]]>
https://ufirst.jp/memo/2018/01/windows%e3%81%a7%e8%a7%a3%e5%87%8d%e3%81%97%e3%81%a6%e3%82%82%e6%96%87%e5%ad%97%e5%8c%96%e3%81%91%e3%81%97%e3%81%aa%e3%81%84%e3%82%88%e3%81%86mac%e3%81%aezip%e5%9c%a7%e7%b8%ae%e7%8e%87%e3%83%84/feed/ 0 1392