问题
I need to access an Excel file on a Windows Share using PHP but seem to be running into what looks like an authentication issue.
I'm using PHP-ExcelReader to open and read the file. Works fine on my local machine but the server I'm putting it on doesn't have the rights to access this share, and so its telling me that the path is unreadable!
I'm not even sure the path I have for accessing this share is correct:
$file_to_include = "\\\\10.9.8.7\depts$\ExcelFile.xls";
But it works on my machine, as I said so I'm happy with that.
Is there any way I can add my credentials in here somewhere?
回答1:
Path \\10.9.8.7\depts$\ExcelFile.xls
must be locally accessible to the client, since PHP has no SMB support.
EDIT: At least not natively, try smb4php
回答2:
Your path is correct.
One thing you could try is to share the drive on the server, then map the shared drive on each users computer (make sure they are all the same drive letter, or name), or just your computer. If it's not too many, the users computers would be better, in case you're out, or forget to authenticate. This way, when the user authenticates, it opens the drive up. You can then call the drive via something like:
$file_to_include = '\\\\'.$_SERVER['REMOTE_ADDR'].'\mappedDrive\file.xls';
回答3:
You path is correct, but keep in mind, that $ amd backslash is a special-char in php when using double quotes.
So you could either write:
$file_to_include = '\\10.9.8.7\depts$\ExcelFile.xls';
or you use double quotes but you add a extra backslash before the special signs
$file_to_include = "\\\\10.9.8.7\depts\\\$\\ExcelFile.xls";
or you yust use forward slashes as directory separator, but the dollar still must be escaped
$file_to_include = "\\\\10.9.8.7/depts/\$/ExcelFile.xls";
About the authdata: if you are running a php file, it usually inherits the permissions of the starting process. What means, if you already saved the auth for this share in your explorer and you are starting a php, the php file inherits this already saved permissions.
But dont forget, when you run a php in a webserver, this webserver is maybe running in a different user, which dont has the same permissions like your currently logged in user.
来源:https://stackoverflow.com/questions/1444976/accessing-a-windows-share-using-php