- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
下面的设置在一段时间内可以正常工作。最终,CIFS 主机脱机(补丁、电源等)。当这种情况发生时...PHP 似乎失去了理智并拒绝访问挂载点中的文件,直到 php-fpm 重新启动,尽管操作系统完全可以访问 CIFS 共享。
Warning: scandir(repository/Some Series/Some Title): failed to open dir: No such file or directory in /var/www/audiobooks/libraries/bookScan.php on line 169
关于我遗漏的任何指示,以便不需要重新启动 php-fpm?
我在 linux 服务器上有以下挂载点:
//10.68.x.x/Media/Audiobooks on /var/www/audiobooks/repository type cifs (rw,relatime,vers=default,cache=strict,username=xxxxxx,domain=/,uid=48,forceuid,gid=996,forcegid,addr=10.68.x.x,file_mode=0755,dir_mode=0775,soft,nounix,mapposix,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1)
运行以下代码:
public function getBookFiles($book)
{
$path = $book["path"];
$files = scandir($path);
$files = array_diff($files,array('..','.'));
return $files;
}
PHP-FPM 重启修复了这个问题。操作系统在中断期间访问这些文件没有问题。
[root@audiobook audiobooks]# stat /var/www/audiobooks/repository/Some\ Series/Some\ Title/01\ Some\ Title.mp3
File: '/var/www/audiobooks/repository/Some Series/Some Title/01 Some Title.mp3'
Size: 4170169 Blocks: 8152 IO Block: 16384 regular file
Device: 77h/119d Inode: 179 Links: 1
Access: (0555/-r-xr-xr-x) Uid: ( 48/ apache) Gid: ( 996/ nginx)
Access: 2018-03-31 17:09:58.810843700 +0000
Modify: 2018-03-21 20:33:16.000000000 +0000
Change: 2018-04-01 05:58:06.448224400 +0000
Birth: -
PHP 版本:
php72-php.x86_64 7.2.4-1.el7.remi @remi-safe
php72-php-cli.x86_64 7.2.4-1.el7.remi @remi-safe
php72-php-common.x86_64 7.2.4-1.el7.remi @remi-safe
php72-php-fpm.x86_64 7.2.4-1.el7.remi @remi-safe
php72-php-json.x86_64 7.2.4-1.el7.remi @remi-safe
php72-php-mbstring.x86_64 7.2.4-1.el7.remi @remi-safe
php72-php-pdo.x86_64 7.2.4-1.el7.remi @remi-safe
php72-php-pecl-http.x86_64 3.1.1~RC1-2.el7.remi @remi-safe
php72-php-pecl-propro.x86_64 2.0.1-4.el7.remi @remi-safe
php72-php-pecl-raphf.x86_64 2.0.0-5.el7.remi @remi-safe
php72-php-pecl-zip.x86_64 1.15.2-1.el7.remi @remi-safe
php72-php-xml.x86_64 7.2.4-1.el7.remi @remi-safe
php72-runtime.x86_64 1.0-1.el7.remi @remi-safe
最佳答案
首先尝试测试目录是否存在且可读(更好的是,将其包装在一些类方法中)。
如果测试失败,并且您怀疑是由于 CIFS 擅离职守,请尝试发出 clearstatcache()
。如果操作系统可以访问共享,这意味着内部 SMB 缓存是可靠的,但对于 PHP 副本来说可能并非如此,它在 FPM 模块内共享和集中。
关于PHP scandir() 在 cifs 挂载上失败,直到 php-fpm 重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50513738/
我的应用程序需要使用 CIFS 和 Kerberos 安全地安装 Isilon 共享。我的 mount 尝试返回:Required key not available: mount -t cifs /
我的 Windows 计算机上有一个文件夹,它使用 cifs 安装到我的 Linux 计算机上。今天,当访问该文件夹时,我被拒绝访问。当我检查文件权限时,我发现它显示了非常奇怪的权限、用户名、大小和上
我的应用程序从 map 文件加载约 100k 项(矩形)的集合,然后构建 MX-CIF 四叉树作为快速查找的索引。四叉树是在启动时构建的,其内容在运行时不会更改。 (在 MX-CIF 四叉树中,项目由
我正在编写一个脚本来创建坐骑。我使用的系统命令是: sudo /bin/mount -soft -t smbfs -o username='{username}',password='{passwor
我的 jsp 文件中有以下代码: Hello
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
所以我在服务器 A 上有一个 Samba 共享。我将该共享安装到另外两台服务器 B 和 C。这个想法是 B 和 C 需要将临时文件写入单个位置,以便多个后台处理作业(也在 B 和 C 上运行)可以访问
我正在考虑对 CIFS/SMB 进行写入优化,以便抑制重复 block 的写入。例如,我从远程共享读取一个文件并修改文件末尾附近的部分。当我保存文件时,我只想将文件中实际更改的部分的写入请求发送回远程
我使用用户“gab”在 Linux Mint 下的 cifs 共享上下载了一个文件。我必须格式化这台计算机并重新安装 Mint。我无法删除通过第一个 Mint 下载的文件。这是我尝试过的。 sudo
这个问题是that question的扩展. 再一次:我在 CentOS 6.0 下工作,我有一个远程 win7 文件夹,安装有: mount -t cifs //PC128/mnt /media/n
我一直在/etc/fstab 中使用这一行来将存储设备安装到我的主机上: //url.to-my-storage.com/mystorage /mnt/backup cifsiocharset=utf
我通过 cifs 在我的 Linux 机器上安装了一个 Windows 共享,并且遇到了一些基于机器之间时间差异的问题。例如,在 Emacs 中处理文件时,如果我尝试保存更改,Emacs 会警告我该文
当我尝试将文件从 cifs 挂载重命名为本地路径(将文件从服务器移动到本地硬盘)时,我得到 -1。我可以删除文件,也可以添加新文件,只是不能使用 rename() 函数来完成。该程序以 root 用户
我正在尝试在 linux 机器上使用 subversion,存储库位于 Microsoft sbs2008 服务器上。 (我可以从 Microsoft Windows 7 机器访问存储库。)有人能告诉
当我重新启动 Alfresco 时,它开始...我得到了页面...但是在日志中我得到了错误: 2015-11-10 09:58:55,282 INFO [management.subsystem
我正在为 linux 编写一个流式服务器,它从 CIFS 装载读取文件并发送他们通过 socket 。理想情况下,linux 会将文件缓存在内存中,以便后续读取会更快。是这样吗?我可以告诉内核缓存吗网
我在 Linux 机器上安装了一个 CIFS 共享。 CIFS 服务器已关闭,或 Internet 连接已关闭,任何接触 CIFS 挂载的内容现在都需要几分钟才能超时,并且在您等待时无法杀死。我什至不
我正在尝试使用 Publish over CIFS 插件将文件从我的 Jenkins 工作区传输到网络位置。 通常,这很好用,但我遇到了问题。 当我尝试复制文件夹中存在空格的文件时,插件不会选择要传输
Alfresco 提供了 CIFS 连接器,因此它可以充当 Intranet 中的普通文件服务器。 与基于“正常”(windows/samba)的文件服务器相比,某些操作确实会损害系统,例如使用 Wi
我正在尝试在开发环境中将SMB网络存储映射到Docker,使其以与共享本地驱动器相同的方式可用于容器。这意味着,对于整个Docker VM,不是单个容器。另一个应用程序需要通过SMB访问进行网络存储,
我是一名优秀的程序员,十分优秀!