PHP

組み込みWEBサーバで簡易デバッグ

  1. C:\Users\Administrator\index.php を作成
<!--?php phpinfo(); ?-->
  1. 組み込みWEBサーバを起動
> php -S localhost:8081
  1. WEBブラウザから「http://localhost:8081/index.php」にアクセス

upload_tmp_dir を設定してファイルをアップロード

  • PHP にはファイルのアップロード時における一時ファイルを保存しておく場所を設定する upload_tmp_dir という設定項目がある。
  • Windows では upload_tmp_dir が未設定の場合 C:\Windows\Temp が利用されることを以下ログから確認した。
  • つまり PHP の実行場所を open_basedir で制限をかけているのに、ファイルアップロード時に C:\Windows\Temp を利用したことで、upload_tmp_dir のパスが open_basedir で許可されていない。というエラーが発生したと考えられる。
  • さらに open_basedir に設定しても C:\Windows\Temp に対するFTPユーザの権限がなくエラーが発生すると思われる。
  • 対応としては open_basedir だけでなく upload_tmp_dir も設定する。 –
  • php.ini で全体に縛りを入れたくない場合は php-cgi.exe に「-d open_base_dir=絶対パス」と「-d upload_tmp_dir=絶対パス」を渡して、CGIのプロセス単位にしてやる。

php.iniで関数を無効化

  • php.ini の disable_functions に無効化する関数名を指定
disable_functions = "eval, exec"

PHP + SQL Server => Query error: Memory limit of 10240 KB exceeded for buffered query …

  • SQL ServerのPHPドライバーでメモリー制限の許容値を超えてしまったんだな~使っているPHP7.2のphp.iniに以下を設定し、プロセスを再起動して解消
extension=php_pdo_sqlsrv_72_nts_x64.dll
pdo_sqlsrv.client_buffer_max_kb_size = '50240'

extension=php_sqlsrv_72_nts_x64.dll
sqlsrv.ClientBufferMaxKBSize = 50240

PPHP 5.6.37 64bit版でMicrosoft Drivers for PHP for SQL Serverが認識されない

  • ここを確認して「あ~そういえば7.x系の場合はx86/x64それぞれのDriverがあったけど、5.x系は一種類のdriver」しかないな」と納得し、32bit版で試したら認識しました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*