一直以为php的dirname会检测所传递的参数文件是否存在,今天才发现原来不是。它仅仅是从后往前找到第一个/符号,然后把该符号前的字符串当做文件所在的路径名称。 $ php -r "echo dirname('/a/b/c/d') /a/b/c $ php -r "echo dirname('/tmp/ccc.log/dd/ff');" /tmp/ccc.log/dd