5

関数を介してディレクトリまたはファイルにアクセスしようとすると、サーバーで興味深い結果が得られます。すべてのファイルとディレクトリのアクセス許可を 777 に設定し、コンテンツ所有者を Apache に変更しましたが、それでもエラー メッセージが表示されます。コード:
move_uploaded_file($_FILES['file']['tmp_name'], '/var/www/html/fileContent_Site/userData/'.$_SESSION['username'].DIRECTORY_SEPARATOR.$_FILES['file']['name']);
または file_put_contents('userData/userData.txt', $result,FILE_APPEND); mkdir("userData/".$register['username']);

「move_uploaded_file()」の場合、次のようになります。

move_uploaded_file(/var/www/php/Site/userData/radi/110729.png): ストリームを開くことができませんでした: /var/www/php/Site/upload.php で許可が拒否されました

move_uploaded_file(): '/tmp/phpUFvMcn' を /var/www/php/Site/upload.php の '/var/www/php/Site/userData/radi/110729.png' に移動できません

そして、「file_put_content()」と「mkdir()」の場合

file_put_contents(userData/userData.txt): ストリームを開けませんでした: /var/www/php/Site/register.php で許可が拒否されました

mkdir(): /var/www/php/Site/register.php で許可が拒否されました

4

3 に答える 3

5
  1. PHP を実行する所有者を確認します。確認するには、PHP ファイルの「file_put_contents」の近くにこれらの文字列を追加するだけです

    echo "現在のユーザー: ".get_current_user();

    echo "スクリプトは次のユーザーで実行されました: ".exec('whoami');

  2. 現在のユーザーと「スクリプト ユーザー」に違いがある場合は、問題が見つかりました。

出力例:

current user: root
script was executed under user: www-data

PHPスクリプトから書き込みたいPHPファイルディレクトリ/ディレクトリに適切なユーザーを設定するだけです: Linuxターミナルで次を実行します:

chown -R www-data:www-data /path/to/the/folder

「www-data」ユーザーは単なる例であることに注意してください。「スクリプトはユーザーの下で実行されました」出力から取得したユーザーを使用する必要があります。

PS: フォルダーの所有者を確認するには、次の Linux コマンドを使用できます。

ls -ltr

PPS: フォルダーに適切なアクセス許可があるかどうかを確認してください: 755 フォルダーの php ファイルには "644" アクセス許可が必要です。

権限を確認するには、所有者の確認と同じコマンドを使用します。

ls -ltr

次のように表示されます。

drwxr-xr-x  10 www-data www-data 4096 Aug  5 15:18 api

「drwxr-xr-x」はアクセス許可です。詳細については、Google で検索してください。

于 2020-08-10T14:10:29.170 に答える
0

使用する

$_SERVER["DOCUMENT_ROOT"]."/myFolder/path to upload folder". 

そして一度チェック

于 2015-08-21T09:06:57.713 に答える
0

http.conf (/opt/lampp/etc/httpd.conf 内) ファイルを開きます。

この部分を編集します。

<IfModule unixd_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.  
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User hostname
Group hostname
</IfModule>

それが機能するかどうかを確認してください。

于 2015-08-21T09:15:08.610 に答える