2

<touch>タスクを使用して特定のファイルの権限をチェックするphingビルドファイルがあります。

<target description="list of files to check permission" name="files-to-test">
    <property name="filesToCheck" value=""/>
    <php expression="file_get_contents('filesToCheck.txt')" returnProperty="filesToCheck"/>
    <foreach list="${filesToCheck}" param="file" target="permission-test"/>
</target>

<target description="Test the permission of files that needs to be written" name="permission-test">
    <touch file="${file}"/>
</target>

さまざまなファイルの場所のリストである外部ファイル(filesToCheck.txt)を呼び出します。これは正常に機能します。ただし、同じ外部ファイル(filesToCheck.txt)の特定のキーに基づいて特定のファイルにアクセスする場合、PHPコードで同じリストを再利用することはできません。

Phingのドキュメントを調べましたが、配列タスクが見つかりませんでした。誰かが回避策を知っているか、Phingで配列プロパティを処理するための唯一の解決策である新しいタスクを作成していますか?

4

2 に答える 2

3

タッチタスクはファイルのアクセス許可をチェックする最も効率的な方法ではなかったため、アドホックタスクを作成することになりました。ユーザーがファイルの所有者でない場合、 PHPのタッチはファイルに対して期待どおりに機能しません。

これは私が思いついたアドホックタスクです。

           <adhoc-task name="is-file-writeable">
            <![CDATA[

            class IsFileWriteableTest extends Task 
            {
                private $file;

                           function setFile($file) 
                {
                    $filesArray = parse_ini_file('filesToCheck.ini');
                    $this->files = $filesArray;
                }

                function main() 
                {
                    foreach ($this->files as $fileName => $fileLocation)    
                    {
                        if (!is_writable($fileLocation)) 
                        {    
                            throw new Exception("No write permission for $fileLocation");
                        }
                    }
                }
            }
            ]]>
            </adhoc-task>

            <target description="list of files to check permission" name="files-to-test">
            <is-file-writeable file="/path/to/filesToCheck.ini" />
            </target>
于 2009-08-05T19:14:30.310 に答える
0

おそらく、アドホックタスクをクイックアンドダーティソリューションとして作成することも、独自のタスクを作成して、それについてもう少し堅牢にすることもできます。私はしばらくの間Phingを使用してきましたが、自分で書く代わりに何も飛び出しません。

于 2009-08-04T21:26:42.683 に答える