私のphp覚書
python覚書 ubuntu覚書 php覚書 コマンド覚書 その他の覚書
2

ssh接続したリモートサーバー上でphpの対話モードを実行

<?php xxx ?>で記述して実行コマンド?ctrl+dを押す必要がある。

Interactive mode enabled
<?php
echo "Hello World\n";
?>
win --> ctrl + z を押す。 mac -> ctrl + dを押す
macでctrl + z を押すと終了する。
Hello World


3

データベースへのレコード追加でIDを返す

PHPのPDOオブジェクトを利用してレコードを追加(insert)直後に、PDOオブジェクトのlastinsertid()メソッドをコールすれば直前に追加されたレコードのIDが取得できる。
IDとして値を返すフィールドは、integer primary key autoincrement属性が必要。
試した結果では引数なしで$pdo->lastinsertid()で呼び出せばよいと思っているが、PHPの解説には特定のフィールドを引数で指定するような説明もある。

4

sqlite3のドライバーをインストール

sudo apt install php-sqlite3

phpもsqlte3もインストールしてあるのになぜかphpのsqlite3ドライバー(PDO)がインストールされていなかった。

ドライバーがないとエラーが出たら、phpinfo()を出力してPDO項目を確認すること。PDO drivers => sqlite となっていればドラーバーがあたっている。

ちなみに、cliでphpinfo()を実行するのは次のとおり
php -r 'phpinfo();'
そのままだと端末にダラダラ出力されるのでファイルにリダイレクトすること。


1

php開発環境のxamppについて

起動 sudo /opt/lampp/lampp start
終了 sudo /opt/lampp/lampp stop
公開フォルダ /opt/lampp/htdocs
ブラウザでのアクセス localhost
FTPクライアントでもアクセスできるが、その際のパスワードはubuntuログインと同じ
FTPクライアントを使う意味はない。単にファイルをコピーしてファイル権限を変更する方が簡単。
FTPクライアントでは権限の変更ができなかったように思う。
システムにもPHPがインストールされているが、xampp(lampp)の環境のPHPはそれとは別のもの。
PHP.iniは/opt/lampp/etc/にある。

2023.8.12 追記:
xamppを久しぶりにインストールしたらsudo /opt/lampp/lampp startで起動するのはapacheとMysqlで、proftpdは次のように特別に指定しないと起動しなくなっていた。
sudo /opt/lampp/lampp startftp
なお、sudo sh /opt/lampp/ctlscript.sh startで起動すると、すべて(apache,mysql,proftpd)が起動する。
と、記録したが、sudo /opt/lampp/uninstallで削除して、再度インストールしたらsudo /opt/lampp/lampp startで従来どおり3つとも起動するようになっていた。何が問題だったのか?

5

ファイルをアップロードする際のサイズ制限について

htmlのformでファイルをアップロードする際にMAX_FILE_SIZEを指定してファイルサイズの制限(10MBまで)をしようとしたが、制限値に達していないファイルもアップロードできない場合があった。

原因はphpの仕様であった。formでMAX_FILE_SIZEを10M(1024*1024*10)に指定したとしても、phpの設定で
post_max_size = 8M
upload_max_filesize = 2M
になっていたので、2Mまでのファイルしかアップロードされなかった。

そこで、サイトのディレクトリにphp.iniを設定して、
post_max_size = 10M //postでアップロード
upload_max_filesize = 10M
にすると期待どおりに動作するようになった。

ちなみに、サイトのphp.iniの上記の項目以外の項目はサーバー全体のphp.iniの値をそのまま踏襲する必要があった。ディレクトリ毎のphp.iniを許してくれるなら、サイトディレクトリ内のphp.iniで設定されていない項目は全体のphp.iniから読み込んでくるようにできないものか。