PHPレガシープロジェクト改修時のトラブルシューティング

PHPバージョンアーカイブの入手先

過去のPHPバージョンは以下からダウンロード可能:

https://windows.php.net/downloads/releases/archives/

index.php省略時のエラー対応

public/.htaccessファイルを以下のように修正:

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]
</IfModule>

OSSファイルアップロード時のCORSエラー

エラーメッセージ例:

Access to XMLHttpRequest at 'http://xxxx.oss-cn-hangzhou.aliyuncs.com/file?uploads=' from origin 'http://localhost' has been blocked by CORS policy

ファイルインクルードエラーの解決

相対パス('../')の問題は絶対パスで解決:

require_once PROJECT_ROOT.'/Library/Vendor/aliyunOss/autoload.php';

メソッド戻り値のコンテキストエラー

OSS SDKのバージョン互換性問題。v2.2.4にダウングレードで解決。

バケット名無効エラー

OSS接続時のバケット名指定ミス。正しい形式は「xxx」のみ。

ファイルアップロード設定

php.iniの設定例:

post_max_size=1024M
max_execution_time=300
upload_max_filesize=1024M
file_uploads = on

セッション設定

session.save_path="/tmp/php_session"

PDO拡張エラー

php.iniでpdo_mysql拡張を有効化:

extension=pdo_mysql

キャッシュ書き込みエラー

Linux環境ではディレクトリ権限を777に設定。

ランタイムファイル問題

common~runtime.phpを削除して再生成。

データベースカラムエラー

主な原因:

  • NULL不可フィールドへのNULL挿入
  • フィールド長超過
  • 型不一致

インクルードパス設定

include_path = '.:/usr/share/pear'

デバッグモード設定

public/index.php:

define('APP_DEBUG', true);

タグ: PHP ThinkPHP OSS トラブルシューティング レガシーシステム

5月16日 10:50 投稿