fopen函数在php中无效。
我在我的php文件中写了以下代码。
$fh = fopen("/home/sugumar/Public_html/sugumar/public_html/123","a+");
fwrite($fh,"hello");
我从命令行运行此代码:php file_name.php工作正常。 但是,如果我从浏览器运行此代码,则会显示以下错误。
警告:fopen(Logs / add_employee.logs) [function.fopen]:无法打开 stream:权限被拒绝 /home/sugumar/Public_html/sugumar/public_html/HRMS/HRMS_add_emp_DB.php 在第111行
警告:fwrite():提供的参数是 不是有效的流资源 /home/sugumar/Public_html/sugumar/public_html/HRMS/HRMS_add_emp_DB.php 在第113行
如何解决这个问题?
提前致谢。
答案 0 :(得分:5)
我认为将公共HTML文件夹chmod到777根本不是一个好主意。除了错误消息指出它不是具有权限问题的public_html文件夹,而是Logs文件夹...特别是这个特定的Logs文件夹中的文件没有“write”访问权限:add_employee.logs
要更改权限,只需找到Logs文件夹的位置,然后如果您有权访问SSH,请cd到服务器上的Logs文件夹并输入:
chmod 666 add_employee.logs
这会将add_employee.logs的权限更改为read + write,因此您的PHP将能够写入该文件。
如果您没有SSH,请尝试使用FTP客户端连接到服务器。然后导航到服务器上的Logs文件夹(取决于您的托管服务提供商是否允许FTP访问此文件夹)。根据您拥有的FTP客户端,您应该能够右键单击文件/文件夹并更改所选文件/文件夹的权限。
如果您无法使用FTP访问Logs文件夹,您的托管服务提供商应提供一个CPanel网站供您登录。从CPanel,您应该可以访问某种文件管理器,您可以在其中访问Logs文件夹,并可以从那里更改文件的权限。由于我不知道您的托管服务提供商使用哪种CPanel软件,并且它们都非常不同,因此无法在此处提供说明。
答案 1 :(得分:2)
您必须使您正在编写的目录由您的网络服务器写入。
例如:
chown -R www-data:www-data /home/sugumar/Public_html/sugumar/public_html/123
chmod 644 /home/sugumar/Public_html/sugumar/public_html/123
答案 2 :(得分:1)
该文件没有为运行Web服务器的用户设置适当的权限,以便能够对其进行修改。使用chmod
等来适当修改权限。
答案 3 :(得分:1)
正如其他用户所指出的那样,当您从Web服务器运行时,您没有该文件的权限。
但是,然后给予该目录的权限,我建议使用不同的文件:
$fh = fopen("/var/tmp/123","a+");
答案 4 :(得分:0)
错误消息不言自明:权限被拒绝
你必须使用FTP客户端chmod你的/ Public_html /到0777,为这个目录中的文件提供web-server写访问权
虽然大写P
似乎非常可疑