PHP ファイル処理では、特にファイルの作成または書き込み時に、イライラする「アクセス許可が拒否されました」エラーがスローされることがよくあります。 この記事では、一般的な原因と効果的な解決策について詳しく説明します。
エラー メッセージは通常次のようになります:
<code>Warning: fopen(extras/users.txt): Failed to open stream: Permission denied in /Applications/XAMPP/xamppfiles/htdocs/php-crash/14_file_handling.php on line 25 Failed to open file for writing.</code>
これは、PHP スクリプトに users.txt
にアクセスするために必要な権限がないことを意味します。
まず、ディレクトリの権限を確認します。 macOS/Linux の場合:
<code class="language-bash">chmod -R 775 /Applications/XAMPP/xamppfiles/htdocs/php-crash/extras</code>
これにより、所有者とグループに読み取り、書き込み、実行のアクセス権が付与され、他のユーザーには読み取りと実行のアクセス権が付与されます。 デバッグのみの場合は、一時的に次を使用します:
<code class="language-bash">chmod -R 777 /Applications/XAMPP/xamppfiles/htdocs/php-crash/extras</code>
トラブルシューティング後は、より制限の厳しい権限 (775 など) に戻すことを忘れないでください。
ファイルが存在しない場合、権限の問題により作成が失敗する可能性があります。手動で作成します:
<code class="language-bash">touch /Applications/XAMPP/xamppfiles/htdocs/php-crash/extras/users.txt</code>
次に、その権限を設定します。
<code class="language-bash">chmod 664 /Applications/XAMPP/xamppfiles/htdocs/php-crash/extras/users.txt</code>
これにより、ファイルが書き込み可能になります。
所有権が間違っていると問題が発生する可能性もあります。所有権を確認してください:
<code class="language-bash">ls -l /Applications/XAMPP/xamppfiles/htdocs/php-crash/</code>
所有権を Web サーバー ユーザーに変更します (例: _www
または www-data
):
<code class="language-bash">sudo chown -R www-data:www-data /Applications/XAMPP/xamppfiles/htdocs/php-crash/extras</code>
www-data
をシステムの Web サーバー ユーザーに置き換えます。
エラー処理を使用して PHP コードを改善します:
<code class="language-php"><?php $file = 'extras/users.txt'; // Ensure directory exists if (!is_dir('extras')) { mkdir('extras', 0777, true); // Create directory (full permissions for debugging) } $handle = fopen($file, 'w'); if ($handle) { $contents = 'Brad' . PHP_EOL . 'Sara' . PHP_EOL . 'Mike'; fwrite($handle, $contents); fclose($handle); echo "File created and written successfully."; } else { echo "Failed to open file for writing. Check file permissions."; } ?></code>
これにより、ディレクトリの存在がチェックされ、有益なエラー メッセージが表示されます。
XAMPP を再起動すると、権限の問題が解決される場合があります:
<code class="language-bash">sudo /Applications/XAMPP/xamppfiles/xampp restart</code>
詳細な PHP エラー レポートを有効にする:
<code class="language-php">ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);</code>
これは問題を正確に特定するのに役立ちます。
extras
ディレクトリが正しい権限で存在することを確認します。chmod 777
を使用します (その後元に戻します)。/Applications/XAMPP/logs/php_error_log
.PHP の「アクセス許可が拒否されました」エラーを解決するには、ファイルとディレクトリのアクセス許可を管理し、正しい所有権を確保し、堅牢なエラー処理を使用する必要があります。 上記の手順は、この一般的な問題を解決し、PHP ファイルの処理を改善するのに役立ちます。 さらにサポートが必要な場合は、ブログを参照するか、以下にコメントを残してください。コーディングを楽しんでください!
以上がPHP ファイル処理における Permission Denied エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。