LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (https://www.linuxquestions.org/questions/programming-9/)
-   -   why isn't this php symlink script working (https://www.linuxquestions.org/questions/programming-9/why-isnt-this-php-symlink-script-working-317517/)

verbatim 04-26-2005 08:46 PM

why isn't this php symlink script working
 
I was told that the code below would create symlinks in php.

Code:

$path = "/home/user/orig_file";
$path_new = "/home/user/link_file";

symlink($path_new, $path);

I 'reconfigured' it to work to my needs, but it doesnt.

the paths i am trying to link are below:


Code:


$path = "/home/some/dep/";
$path_new = "/home/mem/main/users/{$username}/";

symlink($path_new, $path);

the script is in the /home/mem/main/ directory by the way.

Any help offered would be greatly appreciated, thanks

deiussum 04-26-2005 11:34 PM

Shouldn't it be the other way around?

symlink($path, $path_new);

Also, you need to make sure the permissions are set properly. What exactly doesn't work about it? Do you get a specific error message you could post?

verbatim 04-26-2005 11:38 PM

thanks.

i just got that myself and was trying to figure out how i set the chmod settings for the new folder.

is it

Code:

$path = "/home/some/dep/";
$path_new = "/home/mem/main/users/{$username}/";


symlink($path, $path_new, 0755);


deiussum 04-27-2005 08:28 AM

The documentation for symlink on php.net (great PHP resource, btw) doesn't mention anything about passing in any sort of permissions. If you want to change permissions after it's created, you can use the chmod function.

What I meant when I said to make sure you have the correct permissions, is that if you are running this PHP script through Apache, it is getting run as a different user. For instance in my setup, apache runs as the user "nobody" in the Group "nobody." If "nobody" doesn't have permissions to create a file in the directory you are trying to create your link, you won't be able to create it.

verbatim 04-27-2005 08:29 AM

if i am set up to run as nobody on my server, how would i change that?

verbatim 04-27-2005 08:32 AM

i do have permission to create folders though, mkdir works for me.

i tried

[code:]$path = "/home/some/dep/";
$path_new = "/home/mem/main/users/{$username}/";


symlink($path, $path_new);
chmod ($path_new, 0755);
[/code]


it didnt work

deiussum 04-27-2005 08:42 AM

Does mkdir work for you from within the PHP script, though...

Are you getting any specific errors you can share?

The user that Apache is run from is in the apache config. /etc/apache/httpd.conf on my Slackware system. I wouldn't recommend changing that, though, as it could be a security risk.

To test if your problem is a permissions one, try changing the permissions of the directory you are creating the link at to 777 temporarily to see if it works then. (Set it outside of the script from the shell.) If that works, you can decide from there how you want to set it up.

verbatim 04-27-2005 09:04 AM

got symlink working. my original path was incorrect.

thanks very much for the assistance!!!!


deiussum 04-27-2005 09:13 AM

Since the link is just a symbolic link to another directory, you would change permissions on the original directory. Again, nobody will need to have write privileges to change that, though.

But, if you got everything working, I'm not sure you need to do any more with setting permissions.


All times are GMT -5. The time now is 03:37 PM.