1

何年にもわたってphpでプログラミングした後、この質問は私にはまだ奇妙に思えます。

本番/開発の権限に問題がないように、ファイルを動的に書き込み可能にしたいのですが、それでも問題が発生します。

誰かが私が間違っていることについて説明してもらえますか?

// permissions    -- the folder writable by www-data
//drwxrwxrwx 2 www-data www-data  4096 mag 24 12:19 Details

// then the file not writable by the owner
-r----x--t 1 www-data www-data 0 giu  8 12:48 /home/giuseppe/homeProj//Ariprova/trunk/PhpCsv/phpcsv/ConfigClasses/Helpers/Virtuemart2/Details/324-PartsToAdd.json

// then the code

if (!file_exists($fileRequest)) {   // it's found
                throw new Exception ('File non trovato. Nome File completo: '.$fileRequest. ' con cartella '.  getcwd()); 
                }  

if (!is_writable($fileRequest)) {
                $results = @chmod($fileRequest, '0777');  //this gives true 

            }

            $fileReq = fopen($fileRequest, 'w');
            fwrite($fileReq, 'a string' );   // this writes nothing on file

            fclose($fileReq);
4

2 に答える 2

6

Change chmod($fileRequest, '0777') to chmod($fileRequest, 0777). The string '0777' will be converted to a numeric value, which will be 777 decimal, which is not what you expect; what you really want is 0777 octal.

于 2012-06-08T11:10:14.307 に答える
2

chmod の man ページは次のとおりです。 http://php.net/chmod 関数「指定されたファイルのモードを変更しようとする」

これは、スクリプト (apache など) を実行するユーザーが、そのディレクトリの所有者によって設定されたアクセス許可を上書きすることを許可されていない可能性があるためです (少なくとも、それが理由の 1 つになる可能性があります)。

更新:所有者(または念のためルート)で親ディレクトリに移動し、これを行うために必要なユーザーに所有権を変更してみてください(chown apache:apache dirnameまたはそのようなもの)

于 2012-06-08T11:08:19.037 に答える