jjzjj

php - 中途更改 fopen() 模式?

我这段代码:$file=fopen($path,'r+');flock($file,LOCK_EX);//readingthefileintoanarrayanddoingsomestufftoitfor($i=0;$i基本上我想做的是:打开一个文件>锁定它>读取它>做一些事情>清除文件>写入文件>解锁它>关闭它。问题是清算部分。我知道我可以用fopen($file,'w+')做到这一点,但那样的话阅读就会有问题。也许我可以通过某种方式更改模式?保罗,我们将不胜感激 最佳答案 如果使用fseek将指针设置为0,则可以像这样运行ftr

php - filemtime 在文件修改前后返回相同的值

我试图在使用fwrite写入文件之前和之后获取文件的最后修改时间。但是,出于某种原因,我得到了相同的值。";$e=fopen('log.txt','w');fwrite($e,"wellwellwell");$j=filemtime('log.txt');echogmdate("h:i:s",$j);?>现在我在运行此脚本前大约一分钟用文本编辑器修改“log.txt”。所以我应该得到大约40-60秒的时差。如果有人能指出这里发生了什么,那将不胜感激。谢谢。 最佳答案 filemtime的文档声明此函数的结果已缓存。也许你可以试试cl

php - fopen 在公共(public)软件中使用安全吗?

我正在创建一个Web应用程序,我希望向公众发布该应用程序以便在任何人自己的Web服务器上下载和安装,但是我刚刚被告知某些Web主机禁止在PHP中使用fopen由于到“安全问题”,特别是在共享主机上。我在应用程序的安装过程中使用了fopen,我应该担心这个吗?这是共享主机中的常见做法吗?如果是这样,还有另一种方法可以写入文件吗?我听说过cURL,但这需要最终用户具备更多高级知识,不是吗?如果是这样,这显然是不可预料的。非常感谢! 最佳答案 fopen()永远不会被禁用。然而,php.ini设置“allow_url_fopen”是。因此

php - file_get_contents 或 fopen 用于读取几 MB 的 php ://input?

这似乎是一个重复的问题,但事实并非如此:我通过php:/input(1-500mb)收到了数兆字节的数据,我必须将这些数据保存在一个文件中。更性能明智(服务器负载,速度)使用:file_put_contents($filename,file_get_contents('php://input'))或$input=fopen("php://input","r");$temp=tmpfile();$realSize=stream_copy_to_stream($input,$temp);fclose($input);$target=fopen($filename,"w");fseek($t

php - fopen 权限被拒绝

当我尝试加载我的一个php页面时出现以下错误:[FriApr0822:59:502011][error][client::1]PHPWarning:fopen(tracking_id.txt):failedtoopenstream:Permissiondeniedin/var/www/basic.phponline61第61行是以下脚本的第二行:$ourFileName="tracking_id.txt";$ourFileHandle=fopen($ourFileName,'w')ordie("can'topenfile");fwrite($ourFileHandle,$trackin

php - 为什么 fopen 在服务器返回错误时返回无效句柄

当服务器返回任何错误(401、405等)时,fopen返回无效。有没有办法接收响应的主体? 最佳答案 使用上下文(通过stream_context_create)和ignore_errorscontextoption,即“即使在失败状态代码时也能获取内容。”:$options=array('http'=>array('ignore_errors'=>true,),);$context=stream_context_create($options);$handle=fopen('http://url/','r',false,$cont

php - 替换文件中的一行而不重写整个文件(在 PHP 中)

假设我有一个中等大小的文本文件(~850kb,10,000多行)我想替换分布在文件中的特定行(或几行)。当前执行此操作的方法包括重写整个文件。我目前使用的方法是逐行读取整个文件,写入.tmp文件,完成后,我将tmp文件重命名()为原始源文件。它有效,但速度很慢。当然,随着文件的增长,执行时间也会增长。是否有另一种方法(使用PHP)来完成工作,而不必每次需要替换或删除一两行时都重写整个文件?谢谢!我环顾四周,在stackoverflow上找不到这个问题的答案。 最佳答案 如果替换的行与原始行的大小完全相同,那么您只需在文件中的那个位置

php - 使用 PHP 从 WordPress 插件写入文本文件

我正在尝试从WordPress插件将日期写入文本文件。虽然这适用于单个PHP文件,但当我将代码添加到插件时它不会写入。TXT文件具有777权限,并且与插件文件位于同一目录中。我做错了什么?这是插件,我添加的行在block//log404stotextfile中:\r\n";$mailsubj=$blname.':404error';$mailintro="Someonewantedtogoto".$request.",butitdoesn'texist.Maybeyoucanhavealookandseeifanythingneedstobefixed.\r\n";$mailbody=

如果没有数据传输,PHP 流超时

我目前正在实现一个PHP类,它可以获取图像文件并将它们缓存在本地。这些图像可能来自其他本地源,通过HTTP或使用Guzzle客户端的HTTP。使用PHP流包装器,我应该能够以相同的方式处理所有源。我现在要做的是在没有数据通过流传输时实现超时。这应该处理以下情况:首先无法建立流。这可能应该在fopen调用时处理,而不是超时。流已建立但没有数据传输。流已建立,数据已传输,但在传输过程中停止了一段时间。我想我可以用stream_set_timeout来做这一切但我不太清楚这到底是做什么的。如果流上的任何操作花费的时间超过允许的时间,超时是否适用,即我可以做一些需要0.5秒两次且超时为0.75

php - fopen() 是否受文件系统限制?

我编写了一个程序来生成大型.SQL文件以快速填充非常大的数据库。我用PHP编写了脚本。当我开始编码时,我使用的是fopen()和fwrite()。当文件变得太大时,程序会将控制权返回给shell,文件就会不完整。不幸的是,我不确定到底有多大才算“太大”。我认为它可能在4GB左右。为了解决这个问题,我将文件echo输出到标准输出。当我这样调用程序时,我重定向了它:[root@localhost]$phpgeneratesql.php>myfile.sql这就像一个魅力。我的输出文件最终约为10GB。那么,我的问题是:fopen()和fwrite()在生成文件的能力方面是否受到文件系统的限