2011-04-04 39 views
0

我升级到MediaTemple上的(dv)服务器,他们使用Plesk 10.1.1。PHP - fopen似乎没有工作,不能更改权限

我有这种类型的代码的很多瞬间:

$myFile = "textfile.txt"; 
$fh = fopen($myFile, 'w') or die("cant open"); 
$stringData = "CONTENT"; 
fwrite($fh, $stringData); 
fclose($fh); 

能正常工作的XAMPP(本地主机),但是一旦其在服务器上,这是行不通的。它会死();并说它无法打开文件。即使该文件在那里。

我做了一些测试,发现它的权限问题。如果我将文件更改为0666,则可以使用。然而,我不能chmod自己像这样的文件:

​​

这似乎并不奏效。我也试过0777。我也尝试使用ftp url来获得相同的结果。

所以...我有两个问题...

问题1:

我如何使用chmod工作?我如何获得PHP chmod();工作,有什么我得改变在php.ini?

问题2(所需的解决方案):

我有什么在php.ini/Plesk中/服务器设置改变使我的工作的第一位,而不必chmod来666再回到655每次我创建/编辑一个txt文件?

谢谢!

Ps。 allow_fopen已打开

+0

我认为你的服务器用户对textfile.txt没有写权限。另外,当您手动修改权限时,也是不同的用户(谁有权利)。检查这个。 – 2011-04-04 07:46:51

+0

你提到的allow_fopen是什么? – Oswald 2011-04-04 07:53:39

+0

很可能是ftp服务器“使用”另一个用户帐户(和/或组)比web服务器用来运行php。然后它是一个配置thingy,而不是你需要改变你的代码 - > serverfault.com或webmasters.stackexchange.com – VolkerK 2011-04-04 08:01:28

回答

0

如何让CHMOD正常工作?如何 我得到的PHP chmod();工作,是 那里我得改变在 php.ini?

从PHP手册:

当前用户是 ,其执行PHP用户。它可能不是您用于普通shell或 FTP访问的相同用户的 。只有拥有大多数 系统上的文件的用户才能更改 模式。

如果PHP有问题chmod()ing文件,请自己更改模式 - 通过FTP或shell。如果您想要更换所有者以避免出现问题,则必须通过shell执行此操作。让PHP创建一个测试文件,例如file_put_contents("foo.txt", "bar")并记录下所有者。然后通过shell使用chown命令并将所有者设置为与测试文件的所有者相同。这也是chmod文件的好时机。

我有什么在php.ini更改/ 的Plesk /服务器设置,使我的 代码工作的第一位,而无需 于chmod 666再回到655每 时间创建/编辑txt文件?

如果你通过PHP创建一个文件,你应该可以在任何时候通过PHP进行编辑(如果需要,可以chmod)。

这使您可以通过PHP创建所有必需的文件。您可以从原始文件(例如$content = file_get_contents("textfile.txt"))读取并将内容写入新文件(例如file_put_contents("textfile.copy.txt", $content))。然后通过FTP/shell删除原始文件。

+0

谢谢!我如何归还店主?我试过你的例子,代码,但我很困惑如何返回所有者? – 2011-04-04 08:27:19

+0

假设你想在shell中执行一个chown命令,运行www目录内的命令'ls -l'。它会显示所有文件的文件信息,包括所有者名称。 – 2011-04-04 08:43:46

+0

我认为它说所有者是psacln – 2011-04-04 09:13:05