|
|
Can I bulk fix PHP require/include references?A pal of mine asks: "Ugh.. I'm facing server-move Hades.. am moving my site dadsrights.org to a hosted solution, and I have dozens and dozens of files with PHP require_once() includes like "/www/dadsrights/XX". They all need to be changed to "/nfs/www/dadsrights.org/XX". Help!!"
Annie, I am sure we can solve this by having you log in to their Unix server and running a simple script. This is, in fact, a perfect job for the Unix stream editor sed, which accepts patterns of the form s/old/new/g to replace all occurrences of "old" with "new". (the trailing 'g' applies it globally, meaning more than once in a single line, if applicable) But before we do this, it's always smart to back up all the files we're about to tweak. Just in case. :-) To do that, run this command: $ tar czvf php-file-backup.tgz ./*.phpThis will create a new file called "php-file-backup.tgz" that's a compressed 'tar' archive of all the files. If something goes south and things don't work, you can always unpack and restore all the PHP files with tar xzf php-file-backup.tgz). Now, ready for some shell script programming? Open up an editor (vi, pico, emacs, whatever) with the new name "fixphp.sh", and type in the following: #!/bin/sh cd the directory that contains the files you want to fix for fixme in *php do sed 's|/www/dadsrights/|/nfs/www/dadsrights.org/|g' $fixme > new mv new $fixme echo fixed $fixme done exit 0That's it. Now, save this out and execute it by feeding it to a subshell: $ sh fixphp.shYou will want to make sure that you've specified the correct directory in the script as you've typed it in, of course. Once you run the script, you should see a list of 'fixed xx, fixed yy' and when it completes, all your PHP include_once() directives should be working fine. Good luck!
Related HTML, JavaScript and Web Site Programming articles:
✔ How to Create Predefined Google Image Search Links?
Thanks for the Amazon URL [see Creating Amazon Search Links]. That worked beautifully. In fact, I sent you $5.00 for coffee in thanks....
✔ Can I embed a Facebook search box on my blog site?I've seen your articles about how to add a Twitter or Google search box on a Web page, but I have a tougher...
✔ Can I use CSS for drop shadows on my blog?I want to give my site a bit of a facelift and add some neat graphical elements. One of which is drop shadows....
✔ How can I embed interactive photo panoramas on my site/blog?I read through your blog entry about how to take panoramic photos with iOS 6 and an iPhone 5 and got enthused. I've...
✔ How can I create a Twitter search URL shortcut?I'd like to add a few Twitter search links to my Web site. Is that possible, or does Twitter prohibit this sort of...
Let's stay in touch!
Sign up for my weekly AskDaveTaylor Newsletter and you'll receive even more tech and gadget help
right to your inbox, along with exclusive news and industry updates. It's good stuff. I promise!
Categorized:
HTML, JavaScript and Web Site Programming
(Article 3765,
Written by Dave Taylor)
Tagged: Previous: How do I scan my Windows 2000 disk to find bad blocks? Next: Tweak yaboot so Mac OS X is my default OS, not Ubuntu or Yellow Dog Linux? Reader Comments To Date: 4Brent Dax said, on November 25, 2004 8:48 AM:
Right idea, but let's try for readability. ;^) perl -pi~ -e 's{/www/dadsrights/}{/nfs/www/dadsrights.org/}g' *.php John said, on January 7, 2005 12:36 AM:
How about for a whole directory tree? Dave Taylor said, on January 7, 2005 1:40 AM:
for a whole directory tree, I'd use the find command probably something like for fixme in $(find . -type f -name "*.php") which should match all PHP files in the current directory and all subdirectories too.
I do have a comment, now that you mention it!Check This Out Too... |
Recent Entries
Look for Answers
Recommended
All Our Categories
Apple iPad Help
Articles and Reviews Auctions and Online Shopping Blogs and Blogging Building Web Site Traffic Business and Management Computer and Internet Basics d) None of the Above Facebook Help Google Gmail Help Google Plus Help HTML, JavaScript and Web Site Programming Industry News and Trade Shows iPhone and Cell Phone Help iPod, Sony PSP and MP3 Player Help Kindle Fire Help Mac OS X Help Pay Per Click (PPC) Advertising Pinterest Help Search Engine Optimization (SEO) Shell Script Programming Tech Support Video Help The Writing Business Twitter, LinkedIn and Social Network Help Unix and Linux Help Video Game Tips and Help Windows PC Help Find Me on Google+ ADT on G+ |
Edit-in-place to the rescue!
perl -i -p -e 's/\/www\/dadsrights\//\/nfs\/www\/dadsrights.org\//g' *.php
Change the -i to -i.bak if you want foo.php to be saved as foo.php.bak before the changes ar emade