Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t使用perl创建文件(权限被拒绝)_Perl_File_Ubuntu_Creation - Fatal编程技术网

Can';t使用perl创建文件(权限被拒绝)

Can';t使用perl创建文件(权限被拒绝),perl,file,ubuntu,creation,Perl,File,Ubuntu,Creation,我最近开始学习perl(本周)。 客户端将向服务器请求文件,服务器必须使用请求的数据创建文件 所以我一直在尝试创建一个文件,但它拒绝许可 现在:这是代码的一部分。我从网上拿的 $filename = 'report.txt'; open($fh, '>', $filename) or $message="Could not open file '$filename' $!"; print $fh "My first report generated by perl\n";

我最近开始学习perl(本周)。 客户端将向服务器请求文件,服务器必须使用请求的数据创建文件

所以我一直在尝试创建一个文件,但它拒绝许可

现在:这是代码的一部分。我从网上拿的

  $filename = 'report.txt';
  open($fh, '>', $filename) or $message="Could not open file '$filename' $!";
  print $fh "My first report generated by perl\n";
  close $fh;
在我完成这项工作之后,我将继续写我必须写的数据

我正在使用lighttpd和“www数据”用户。我已经花了几个小时试图解决这个问题。。。 此外,我使用$message是因为我不知道如何使用“die”。当我使用“die”时,它会显示“500-内部服务器错误”,而不会显示其他内容


我在Ubuntu 14.04中工作,可能您的用户无法访问您试图写入的文件夹

假设您将一个perl脚本放到目录中,然后用第二个请求执行它

尝试在文档根目录之外创建文件

这将向浏览器发送错误消息

use CGI::Carp qw(fatalsToBrowser);
die "Bad error here";
但您可能需要安装


别忘了在perl中,可能您的用户无法访问您试图写入的文件夹

假设您将一个perl脚本放到目录中,然后用第二个请求执行它

尝试在文档根目录之外创建文件

这将向浏览器发送错误消息

use CGI::Carp qw(fatalsToBrowser);
die "Bad error here";
但您可能需要安装


不要忘记使用perl处理500服务器错误,请参阅。基本上,查找服务器的错误日志

或者,您可以在浏览器中显示错误。这在默认情况下应该是关闭的,并且只有在开发时才打开。有各种各样的模块可以为您实现这一点,这取决于您使用的web框架。如果你使用的是像CGI这样的赤裸裸的东西,那么它就是。如果您正在使用类似的东西,那么您可能应该控制错误消息的去向


出现权限错误是因为运行代码的用户没有写入文件的权限。在这种情况下,它是
www-data
用户。我不能告诉你为什么你被拒绝,你得自己弄清楚。目录可能不允许
www-data
写入文件。
www-data
上的权限通常非常有限,因为web服务器很容易成为攻击的目标

应该有帮助


如果您使用的是Dancer,您可以从命令行运行该程序,并在控制台上获得错误。您必须
sudo-u www-data
以确保以
www-data
的身份运行它,以自己的用户身份运行它将不会模拟
www-data
的权限问题。

关于处理500服务器错误,请参阅。基本上,查找服务器的错误日志

或者,您可以在浏览器中显示错误。这在默认情况下应该是关闭的,并且只有在开发时才打开。有各种各样的模块可以为您实现这一点,这取决于您使用的web框架。如果你使用的是像CGI这样的赤裸裸的东西,那么它就是。如果您正在使用类似的东西,那么您可能应该控制错误消息的去向


出现权限错误是因为运行代码的用户没有写入文件的权限。在这种情况下,它是
www-data
用户。我不能告诉你为什么你被拒绝,你得自己弄清楚。目录可能不允许
www-data
写入文件。
www-data
上的权限通常非常有限,因为web服务器很容易成为攻击的目标

应该有帮助


如果您使用的是Dancer,您可以从命令行运行该程序,并在控制台上获得错误。您必须
sudo-u www-data
以确保以
www-data
的身份运行它,以自己的用户身份运行它不会模拟
www-data
的权限问题。

运行脚本的用户在该目录中是否具有写入权限?如果该文件已经存在,用户是否也对该文件具有写入权限?。例如,如果您以该用户身份登录并
cd
到该目录,那么运行
touch report.txt
是否有效?您应该包括
use strict
使用警告在您编写的所有代码的开头。运行脚本的用户在该目录中是否具有写入权限?如果该文件已经存在,用户是否也对该文件具有写入权限?。例如,如果您以该用户身份登录并
cd
到该目录,那么运行
touch report.txt
是否有效?您应该包括
use strict
使用警告在您编写的所有代码的开头。