2015-02-11 89 views
0

下午好, 我目前正在开发一个PHP项目,它需要一个PHP脚本来安装一个Windows共享驱动器。目前正在使用带XAMPP的OSX进行构建。PHP OSX XAMPP - exec mount命令

exec('mount -t smbfs //user:[email protected]/Share /Volumes/Share 2> temp/error.txt'); 

现在我明白为什么这不起作用。它由于权限。 Apache以用户守护进程运行。现在我可以更改Apache运行的用户来解决这个“挑战”,但是如果可能的话,要避免对服务器进行任何更改。 我想联系一下,看看是否有更好的方法去解决这个问题。

任何想法?

+0

为什么你不在PHP之外,只是保持它挂载? – prodigitalson 2015-02-11 00:36:47

+0

,因为只需要在卸载前短时间安装。 – Wayde 2015-02-11 00:47:08

+0

是的,但允许网络服务器用户挂载它可能是一个可怕的想法,而将其安装在系统中具有较小的缺点,除非它对于SMB服务器来说存在巨大的问题。部署哪种类型的机器时会运行? – prodigitalson 2015-02-11 01:00:00

回答

0

好吧,所以我得到它的工作。 我只需要Web服务器(用户守护进程)拥有一个文件夹,在其中安装共享。

EG。创建了一个名为“tempshare”文件夹的用户守护拥有并在同一文件夹中的PHP脚本(不用担心,它将被放置到web目录的完整时)

exec('mount -t smbfs //user:[email protected]/Share /path/to/tempshare 2> temp/error.txt'); 

似乎工作。任何关于使用这种方法的安全建议?

+0

我还发现[munkie/samba](https://github.com/munkie/samba)顺便说一下..它的PHP SMB客户端和相应的流包装器。它确实使用了'smbclient',尽管它只适用于* nix系统,并且它可能会添加一个Windows实现的工作,然后再在Windows盒子上运行PHP ;-)我测试了它并且如果您有兴趣,请附上示例代码。 – prodigitalson 2015-02-11 03:16:00

+0

谢谢@prodigitalson!我会看看它! – Wayde 2015-02-11 03:23:48

+0

另外,如果你打算使用它,你将需要在Mac OS X上安装带有自制软件或samba3的'samba',因为OS X中的客户端是'smbutil',而且是不同的。 (我用macports'samba3'测试过)。 – prodigitalson 2015-02-11 03:28:38