【发布时间】:2025-11-30 15:55:02
【问题描述】:
我正在修复一些旧代码,该代码应该根据客户的姓氏为客户创建目录。 1000 次中有 999 次按预期工作,但我时不时收到“无法创建基本目录”错误消息,调试显示 $file_directory 在这种情况下只是 "Array" 而不是 @987654323 之类的东西@。
谁能解释一下这段代码如何在绝大多数情况下都能正常工作,但仍然在大约 0.1% 的实例中始终失败?还是代码以外的东西?谢谢!
注意:我最初并没有编写此代码,但我试图让它尽可能接近原始代码
编辑我之前的代码中有错字,但我认为 tliokos 和 Fluinc 的观点非常好,但只是想纠正我的错误
代码:
<?php
$file_directory = build_directory($customer, $UID);
if(!is_dir($file_directory)){ //Check to make sure it does not already exist
if(!mkdir($file_directory)){
mail("debug@example.com","Unable to create base directory","$file_directory");
}
}
function build_directory($customer, $UID){
if($customer->related_orders){
$related = explode(",", $customer->related_orders);
foreach($related as $r_UID){
$rel_order = get_order($r_UID); //fetches order object
if((isset($rel_order->file_directory) && $rel_order->file_directory != "")){
return $rel_order->file_directory;
}
}
}
//Here is where I made my correction
$paths = array('\\\\network\\path');
$base = $paths[0];
//Test if directory is already assigned
if(is_dir($base . "\\order_data\\".$UID."_".str_replace(" ","_",$customer->last_name)."\\")){
return $base . "\\order_data\\".$UID."_".str_replace(" ","_",$customer->last_name)."\\";
}
if($base){
return $base . "\\order_data\\".$UID."_".str_replace(" ","_",$customer->last_name)."\\";
}
}
?>
【问题讨论】:
标签: php arrays debugging dynamic path