我有以下问题
require('drawchart.php');
if ( file_exists('drawchart.php')){ cwrapper();}
命令使用cwrapper中的'chart.png';
cwrapper是drawchart.php中的一个函数,它访问MySQL并绘制图表。这个函数在它自己和test.php中运行得非常好,但它停止在我的主程序中生成图表,我感到困惑的是它为什么它不会在那里工作。
我尝试引入sleep(30)以查看是否需要等待写入文件才能成功。但这也无济于事。下面的第二个命令永远不会选择输出文件chart.png。在两种情况下,目录都是绝对路径,所以这不是问题。
它确实在那里拾取了一个现有的chart.png但是没有应该从if调用生成的更新的那个。它似乎正在跳过对cwrapper的调用。
cwrapper使用pchart绘制图表并且它在测试文件中完全独立完成。
我该如何解决这个问题? 有没有更好的方法来实现这一目标?
答案 0 :(得分:0)
首先,确保调用cwrapper()
函数 。
由于您未提供drawchart.php
的路径,如果当前目录中不存在,require()
会在include_path
中file_exist()
中指定的路径中搜索它(它可以在运行时更改)。
yesterday's solved problem不是那么幸运,它只有在当前目录中才能找到该文件。
处理这种情况的最好方法是不检查文件是否存在(谁关心它?让php.ini
处理它),而是检查你要调用的函数是否存在:
require()
实际上,因为如果无法加载文件,require 'drawchart.php';
if (function_exists('cwrapper')) {
cwrapper();
}
会终止脚本,所以甚至不需要检查函数是否存在。如果它在所需文件中定义,那么它在require
语句返回后存在(否则脚本将被中止)。
您的代码应该简单:
require()