PHP file_exists 今天早上停止工作了?

Posted

技术标签:

【中文标题】PHP file_exists 今天早上停止工作了?【英文标题】:PHP file_exists stopped working this morning? 【发布时间】:2014-02-22 21:10:16 【问题描述】:

只是想知道,我有以下代码:

            <a href="<?=$row->aw_deep_link?>">
                <?php if (file_exists($_SERVER['DOCUMENT_ROOT'] . 'images/products/' . $row->strId . '.jpg')):?>

                <img   itemprop="image" src="<?=base_url() . 'images/products/' . $row->strId?>.jpg" >
                <?php else:?>

                <img   itemprop="image" src="<?=$row->aw_image_url?>" >
                <?php endif;?>

            </a>

直到昨晚,这表现完美;今天早上 - 它突然停止并自动默认为

其他

条款。

PHP 有什么改变吗?

【问题讨论】:

PHP 没有任何变化,检查您的服务器和文件夹权限是否发生了变化。 正如@AbhikChakraborty 所说,检查服务器。 PHP 不会改变,除非您特别选择升级/降级它。尽管在某些托管环境中主要是共享托管,但这不是由您控制的。所以主机可能已经更新了他们的服务器 PHP 版本。确保该文件也确实存在。但是该功能并没有被弃用,所以即使 PHP 版本升级了,也不会引起您的问题。 如果包含要检查是否存在的文件的文件夹达到一定大小,会发生这种情况吗? @AbhikChakraborty 【参考方案1】:

你没有提供足够的信息让任何人给你答案,但我建议检查一下:

    $_SERVER['DOCUMENT_ROOT'] 是否仍与您期望的一样?您可以使用echo $_SERVER['DOCUMENT_ROOT']; 来查找。 images/products/ 目录是否仍然存在,运行此 php 脚本的用户是否可以读取?可能是运行 Apache 的用户。 $row-&gt;strId 仍然有效吗? 目录中是否有一些名为$row-&gt;strId.jpg 的文件,您的用户是否可以读取这些文件?

假设file_exists 损坏是错误的起点,请检查用于构造文件名的变量。

【讨论】:

+1 表示“假设 file_exists 已损坏是错误的起点”【参考方案2】:

如果您知道没有文件或脚本被更改(包括图像文件是否仍然存在),则可能是服务器更改/更新导致了错误。

我的建议是在单独的文件中运行一些简单的测试,即检查$_SERVER['DOCUMENT_ROOT'] 变量的值,检查包含图像的目录是否存在,然后检查图像是否存在。

如果您 100% 确定您没有在服务器上进行任何更改,我建议您联系您的主机。

【讨论】:

以上是关于PHP file_exists 今天早上停止工作了?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复停止工作的gradle - 同步时出错?

PHP file_exist 无法正常工作? [关闭]

PHP 中的 file_exists 未按预期工作

PHP 杂谈 坑爹的file_exists

PHP 和 Apache file_exists 不能从 URL 工作

PHP Phar - file_exists() 问题