Log in

View Full Version : Random: PHP RAR Archive Updating


Fyron
January 27th, 2009, 02:47 AM
I'm trying to use the command line rar tool to update a RAR archive on debian, from a PHP script. I can successfully create new archives from my script. I can successfully run a RAR update command to add files to an archive from the shell, as the apache user. But whenever I try to run a RAR update system call from PHP, the RAR tool seems to be unable to work. All RAR outputs is:


RAR 3.80 beta 3 ...

Updating archive /path/to/archive.rar

The archive in question is not solid. I cannot get it to contain new files with a "rar a" command or a "rar u", no matter what random switches I add. The baffling thing is that I can trivially su into the apache user and run the exact command I'm trying to run from PHP, and it works!

I also cannot seem to get 7z to update any archives from PHP. Same situation, where I can update them with the same command on the shell as apache user, and I can create new archives from PHP without problem.

Xrati
January 27th, 2009, 11:49 AM
Try disabling firewall and virus protections.

Gandalf Parker
January 27th, 2009, 12:11 PM
One of the first things I would do is have the PHP do "env" and "set" to a file so you can view all of the settings of that user.

Does rar have a "verbose" switch?

Im trying to remember something about update using a temp something to unpack in order to make a comparison. I tihnk a fix was to use the -w switch to assign a work directory. That may be really old fuzzy memory. I will try to google something

Captain Kwok
January 27th, 2009, 11:38 PM
I have nothing useful to suggest, but is this some sort of groundwork for a PBW successor?

Fyron
January 28th, 2009, 01:40 AM
The suggestion for a -w switch lead me on the right path. I added something under /tmp for it, and it then tried to add the first file. Unfortunately, it added the file in a corrupt manner. Then I stumbled across this little gem in /usr/share/doc/rar/rar.txt:


In a UNIX environment you need to quote wildcards to avoid them
being expanded by shell. For example, this command will extract
*.asm files from RAR archives in current path:

rar e '*.rar' '*.asm'


d'oh!