我有一个由我的应用程序动态创建的PHP脚本(只是Apache的www文件夹中的fwrite。注意:Apache正在运行,而这是)。
然后,应用程序使用curl ping脚本,脚本抛出错误并死掉(按预期。注意:我可以通过用浏览器点击脚本来确认脚本干净完成,并以合理的价格返回响应时间量)。
在安装过程中,出于未知原因,Apache会为此特定文件创建文件句柄。仅在Apache关闭时才释放此句柄。
我的问题是,如果我现在尝试删除该文件,则该文件已被锁定并且其权限似乎已损坏(Windows表示拒绝对其上任何命令的访问,我什至没有对该权限的读取访问权限,因此我没有权限知道权限变得多么混乱)。
当Apache关闭时,它显然会释放此锁,并且由于我的应用程序试图删除文件但失败了,因此立即从先前的失败删除中删除了文件,现在该锁已释放。
我还安装了cygwin,有时可能会导致文件奇怪的问题,但这次似乎不是罪魁祸首。
关于可能导致这种行为的任何想法?生成并使用相同方式的其他类似脚本绝对可以正常工作。
有关保存的代码
FILE *fp = fopen(szFile, "wb");
if (fp==NULL)
return false;
size_t nWritten = fwrite(strBuffer.data(), 1, strBuffer.size(), fp);
fclose(fp);
return (nWritten==strBuffer.size());
正确运行并返回true,创建时的文件与原始文件相同并且可以访问。文件锁定在Apache首次加载文件时发生。方法无关紧要(通过程序中的curl,wget,浏览器和libcurl的响应和文件句柄相同)。
注意:这仅在Windows上发生。在Linux上,该程序仍从Windows运行,但是使用SFTP执行所有文件活动
答案 0 :(得分:0)
已解决,问题是由于保留了锁的PHP扩展