• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 195
  • Last Modified:

I have a large collection of files I need to rename - but the PHP functions "copy" and "rename" are disabled on my server. Is there an alternative I can try?

I have a large collection of files I need to rename based on an ID number in my database.  This would be extremly simple to do with a "rename" or "copy" function, but the server I am hosted with seems to have these two functions disabled.  Is there another way of doing this through PHP?  I don't know much about batch (DOS maybe?) files, but maybe there is a way that PHP could output some sort of batch script so I could rename my local files instead?  I have XP Home, so unfortunatly I can't setup a local host and just run the PHP script on my own machine.

Liz
0
maeve100
Asked:
maeve100
  • 2
1 Solution
 
Scripting_GuyCommented:
why can't you? Just download PHP for Windows (http://www.php.net/get/php-5.2.6-Win32.zip/from/a/mirror) and extract it to a folder, like c:\php.

Then open a cmd window and use as follows:
c:\php\php.exe -f c:\script\script.php

PHP scripts on Windows do not need a line for the interperter if called with php.exe, so delete the #!/usr/bin/php line if it is there. Just start your scripts with <?php
0
 
maeve100Author Commented:
The local renaming of the file worked - but I can't seem to connect to my online database to grab the name I need to rename the file with based on the ID, Scripting_Guy.  Should I be able to run a local file and have it connect to a database online?  Maybe its a simple matter of syntax?  I am positive the dbconc.php file is working correctly.
<?php 
 
require_once ('dbconc.php'); // Connect to the db.
 
// Make the query.
$query = "SELECT * FROM list WHERE list.id = 9";
$result = @mysql_query ($query); // Run the query.
$row = mysql_fetch_array ($result, MYSQL_ASSOC);
 
$file = 'tmp_file.txt';
$newfile = $row['OID'];
rename($file, $newfile);
 
mysql_close(); // Close the database connection.
?>

Open in new window

0
 
Scripting_GuyCommented:
This depends on your database server, but if you're on a shared host i doubt it.

You can try by change your mysql_connect statement from "localhost" as server (presumably) to the external ip of your server.

But as mentioned, i doubt that this will work. So I would export the data from your online database (e.g. into a textfile) and work with that textfile on your local machine.

If you'll give me a bit more details about your current db scheme (what is the old file name - what is the new one) I'll help you with that if you need any help.
0
 
ddrudikCommented:
Consider the following(note the permissions on "somedir" in the example allows for the writing and deletion of files):
<?php
$oldname='somedir/oldfile.txt';
$newname='somedir/newfile.txt';
$fp = fopen($newname, 'w');
fwrite($fp,file_get_contents($oldname));
fclose($fp);
unlink($oldname);
echo 'done';
?>

Open in new window

0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now