Re: [PHP] Trouble moving directory
In your example, the problem is that the name has spaces, which the shell uses as a delimiter. So That Won't Move/ is kind of being considered parameters instead of part of the dir. Using the command line (i.e. shell/terminal) will give you more feedback as to what is happening (/some/dir/Dir: No such Directory). You need to either escape the characters or enclose it in quotes. For me, I always find it easier to just enclose directory names in quotes. $source_dir = '/some/dir/Dir That Won't Move/'; On Oct 12, 2005, at 10:11 PM, -k. wrote: I'm having trouble moving some directories. My script works fine on some directories but doesn't move others. It seems to have trouble with directories with non alphanumeric charters. I'm running Red Hat FC2. I'm trying to move the directory basically like this... ?Php $source_dir = '/some/dir/Dir That Won't Move/'; $dest_dir = '/some/other/dir/' $cmd = escapeshellcmd(mv .$source_dir. .$dest_dir); $result = shell_exec($cmd); ? Is there some way to escape the characters in the directories? For example if i put a \ in front of blank spaces it takes care of those (same for ',( etc.) but that obviously doesn't take care of everything. I'm hoping there is something easy i'm overlooking here that will escape all the characters. -k. __ Yahoo! Mail - PC Magazine Editors' Choice 2005 http://mail.yahoo.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- Brent Baisley Systems Architect Landover Associates, Inc. Search Advisory Services for Advanced Technology Environments p: 212.759.6400/800.759.0577 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Trouble moving directory
One of the nice things MSFT did was to allow spaces in directory and file names. It created more work for programmers. One of the LOUSIEST things MSFT did was allowing spaces in directory and file names, because of the needless, tedious parsing and checking it requires. So much simpler to train users that computers are dumb and trip over spaces, so just use an underscore where you want to separate words. Funny thing, users accept that. Glad I got that off my chest - Miles At 10:11 AM 10/14/2005, Brent Baisley wrote: In your example, the problem is that the name has spaces, which the shell uses as a delimiter. So That Won't Move/ is kind of being considered parameters instead of part of the dir. Using the command line (i.e. shell/terminal) will give you more feedback as to what is happening (/some/dir/Dir: No such Directory). You need to either escape the characters or enclose it in quotes. For me, I always find it easier to just enclose directory names in quotes. $source_dir = '/some/dir/Dir That Won't Move/'; On Oct 12, 2005, at 10:11 PM, -k. wrote: I'm having trouble moving some directories. My script works fine on some directories but doesn't move others. It seems to have trouble with directories with non alphanumeric charters. I'm running Red Hat FC2. I'm trying to move the directory basically like this... ?Php $source_dir = '/some/dir/Dir That Won't Move/'; $dest_dir = '/some/other/dir/' $cmd = escapeshellcmd(mv .$source_dir. .$dest_dir); $result = shell_exec($cmd); ? Is there some way to escape the characters in the directories? For example if i put a \ in front of blank spaces it takes care of those (same for ',( etc.) but that obviously doesn't take care of everything. I'm hoping there is something easy i'm overlooking here that will escape all the characters. -k. __ Yahoo! Mail - PC Magazine Editors' Choice 2005 http://mail.yahoo.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- Brent Baisley Systems Architect Landover Associates, Inc. Search Advisory Services for Advanced Technology Environments p: 212.759.6400/800.759.0577 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Trouble moving directory
MSFT allowed spaces? They were behind in allowing spaces (and long file names) Apple allowed them far before MS, and Unix allowed spaces far before Apple. Unix just assumes a space is a command/parameter delimiter first and part of the name second. Just like multiplication takes precedence over addition unless you use parenthesis, a space takes precedence as a delimiter unless you use quotes. Spaces are permitted, underscores just means you don't have to use quotes to explain what you mean. It's like saying Unix doesn't allow you to use capitals in the file name because it won't find filename it you type FileName. It's a feature of a case sensitive file system available in most forms of Unix. It also caused a lot of confusion and frustration to people developing web sites under Windows and posting to a Unix host. Telling users to use underscores is a work around that works as long and everyone uses underscores all the time. It's still better to have knowledge of what's going on and why so when one does encounter a file name with a space they know how to reference it. I would say one of the lousiest things MSFT did was reversing the / to reference paths in DOS. On Oct 14, 2005, at 9:28 AM, Miles Thompson wrote: One of the nice things MSFT did was to allow spaces in directory and file names. It created more work for programmers. One of the LOUSIEST things MSFT did was allowing spaces in directory and file names, because of the needless, tedious parsing and checking it requires. So much simpler to train users that computers are dumb and trip over spaces, so just use an underscore where you want to separate words. Funny thing, users accept that. Glad I got that off my chest - Miles At 10:11 AM 10/14/2005, Brent Baisley wrote: In your example, the problem is that the name has spaces, which the shell uses as a delimiter. So That Won't Move/ is kind of being considered parameters instead of part of the dir. Using the command line (i.e. shell/terminal) will give you more feedback as to what is happening (/some/dir/Dir: No such Directory). You need to either escape the characters or enclose it in quotes. For me, I always find it easier to just enclose directory names in quotes. $source_dir = '/some/dir/Dir That Won't Move/'; On Oct 12, 2005, at 10:11 PM, -k. wrote: I'm having trouble moving some directories. My script works fine on some directories but doesn't move others. It seems to have trouble with directories with non alphanumeric charters. I'm running Red Hat FC2. I'm trying to move the directory basically like this... ?Php $source_dir = '/some/dir/Dir That Won't Move/'; $dest_dir = '/some/other/dir/' $cmd = escapeshellcmd(mv .$source_dir. .$dest_dir); $result = shell_exec($cmd); ? Is there some way to escape the characters in the directories? For example if i put a \ in front of blank spaces it takes care of those (same for ',( etc.) but that obviously doesn't take care of everything. I'm hoping there is something easy i'm overlooking here that will escape all the characters. -k. __ Yahoo! Mail - PC Magazine Editors' Choice 2005 http://mail.yahoo.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- Brent Baisley Systems Architect Landover Associates, Inc. Search Advisory Services for Advanced Technology Environments p: 212.759.6400/800.759.0577 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- Brent Baisley Systems Architect Landover Associates, Inc. Search Advisory Services for Advanced Technology Environments p: 212.759.6400/800.759.0577 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Trouble moving directory
escapeshellarg() works quite well, why you say its still failed? did u try? do a ?php echo escapeshellarg('Dir That (Won't Move)/'); ? will produce 'Dir That (Won'\''t Move)' and this does fit into shell, even `(' and `)' is not escaped, for in bash, all thing quoted in single quote will be treated as one whole string and any meta character wont be interpreted by the shell. so , please first try, then post your problem. On 10/13/05, -k. [EMAIL PROTECTED] wrote: --- Jasper Bryant-Greene [EMAIL PROTECTED] wrote: $source_dir = escapeshellarg( '/some/dir/Dir That Won't Move/' ); Unfortunately escapeshellarg doesn't work for all cases, it will escape the ' in that example but it doesn't escape other characters such as ) . So... $source_dir = escapeshellarg( '/some/dir/Dir That (Won't Move)/' ); ...fails as well. Any other ideas? -k. __ Yahoo! Music Unlimited Access over 1 million songs. Try it free. http://music.yahoo.com/unlimited/ -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- all born, to be dead -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Trouble moving directory
On Fri, October 14, 2005 8:28 am, Miles Thompson wrote: One of the nice things MSFT did was to allow spaces in directory and file names. It created more work for programmers. I'm not familiar with MSFT... It must be a new acronym for Apple MacOS :-), circa 1984, which (AFAIK) was the first consumer OS to allow human-centric filenames. It was considered a big boon to many users, who were sick and tired of 8.3 at that point. Of course, Unix and Vax and various mainframes allowed all kinds of characters in filenames... Including control-characters, which led to some interesting effects and pranks when crossed with various utilities that did not plan for such characters. But I digress... To some degree, the current filename problem is compounded here by PHP which works under so many different OSes. There's no problem with spaces or apostrophes in Mac filenames or the routines that operate upon them *IF* they are all Mac-based. The only character most humans want to use that is illegal is the colon (:) Similarly, if you stick solely to Windows or Linux, the rules are fairly straight-forward. Well, as straight-forward as anything is in Windows. But once you start writing multi-OS code, you've got : on Mac, / on Linux, \ on Windows, just in the directory separators. Then you start talking about path separaters and shell arguments, and life gets incredibly more complicated. -- Like Music? http://l-i-e.com/artists.htm -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Trouble moving directory
On 10/13/05, -k. [EMAIL PROTECTED] wrote: --- Jasper Bryant-Greene [EMAIL PROTECTED] wrote: $source_dir = escapeshellarg( '/some/dir/Dir That Won't Move/' ); Unfortunately escapeshellarg doesn't work for all cases, it will escape the ' in that example but it doesn't escape other characters such as ) . So... $source_dir = escapeshellarg( '/some/dir/Dir That (Won't Move)/' ); ...fails as well. Any other ideas? ?php rename(/some/dir/Dir That (Won't Move)/, '/some/other/dir/'); ? Or if you must use shell_exec(), use addcslashes() to escape the annoying characters first. -robin -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Trouble moving directory
-k. wrote: I'm having trouble moving some directories. My script works fine on some directories but doesn't move others. It seems to have trouble with directories with non alphanumeric charters. I'm running Red Hat FC2. I'm trying to move the directory basically like this... ?Php $source_dir = '/some/dir/Dir That Won't Move/'; $source_dir = escapeshellarg( '/some/dir/Dir That Won't Move/' ); $dest_dir = '/some/other/dir/'; $dest_dir = escapeshellarg( '/some/other/dir/' ); $cmd = escapeshellcmd(mv .$source_dir. .$dest_dir); $result = shell_exec($cmd); ? Is there some way to escape the characters in the directories? For example if i put a \ in front of blank spaces it takes care of those (same for ',( etc.) but that obviously doesn't take care of everything. I'm hoping there is something easy i'm overlooking here that will escape all the characters. -- Jasper Bryant-Greene Freelance web developer http://jasper.bryant-greene.name/ -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Trouble moving directory
--- Jasper Bryant-Greene [EMAIL PROTECTED] wrote: $source_dir = escapeshellarg( '/some/dir/Dir That Won't Move/' ); Unfortunately escapeshellarg doesn't work for all cases, it will escape the ' in that example but it doesn't escape other characters such as ) . So... $source_dir = escapeshellarg( '/some/dir/Dir That (Won't Move)/' ); ...fails as well. Any other ideas? -k. __ Yahoo! Music Unlimited Access over 1 million songs. Try it free. http://music.yahoo.com/unlimited/ -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php