Вот код, который вызывает ошибку:Почему только один сервер бросает ошибку «Array to String Conversion»?
foreach($_GET['Inventory'] as $fld => $val) {
print_r("Field: " . $fld . " Value: " . $val . '</br>');
if($val != '' && !is_null($val))
if($fld != 'searchoption')
$perma .= $fld . '=' . $val . '&';
}
print_r() является причиной ошибки, но я только получаю эту ошибку на одном сервере. Этот сервер недавно прошел новую установку Ubuntu (обновлен до 14.04 для новой установки) и LAMPP. Это то же самое (насколько я могу судить) исходный код, как и другие, но по какой-то причине эта ошибка здесь постоянна.
Я не знаком с модулями php-apache, и я не могу поколебать ощущение, что в системе отсутствует основной компонент, который исправит это.
EDIT (дополнительная информация): На сервере вместо того, чтобы бросать ошибку, он отображает «Массив» вместо массива, если действительно существует массив в $ val. Я не хочу менять код, но, скорее, выясню, что может вызвать это.
ВЫХОД ИЗ РАБОЧЕЙ СЕРВЕРУ после выполнения ПОИСК:
Field: searchoption Value: Array
Field: parentBarcode Value:
Field: barcode Value:
Field: room Value:
Field: fixedAssetTag Value:
Field: hostDomainName Value:
Field: ipAddress Value: test
Field: macAddress Value:
Field: serialNumber Value:
Field: purchaseOrder Value:
Field: accountNumber Value:
Field: searchscope Value: 1
EDIT: исходные коды точно так же на обоих серверах.
Loaded модули Apache на сервере не работает:
//both servers have these modules loaded
= core_module (static)
= so_module (static)
= http_module (static)
= log_config_module (static)
= logio_module (static)
= alias_module (shared)
= auth_basic_module (shared)
= authn_file_module (shared)
= authz_host_module (shared)
= authz_user_module (shared)
= autoindex_module (shared)
= cgi_module (shared)
= deflate_module (shared)
= dir_module (shared)
= env_module (shared)
= mime_module (shared)
= mpm_prefork_module (shared)
= negotiation_module (shared)
= php5_module (shared)
= setenvif_module (shared)
= status_module (shared)
//Server with error has these extra modules loaded
+ authz_core_module (shared)
+ authn_core_module (shared)
+ version_module (static)
+ unixd_module (static)
+ access_compat_module (shared)
+ rewrite_module (shared)
+ watchdog_module (static)
+ filter_module (shared)
//Working server has these extra modules loaded
- authz_groupfile_modeul (shared)
- authz_default_module (shared)
- reqtimeout_module (shared)
Возможно, что '$ val' может быть массивом. – r3wt
Попробуйте print_r ($ _ GET ['Inventory']); перед этим кодом, чтобы убедиться, что вход - это то, что вы ожидаете. Поскольку вы обрабатываете параметры URL, вполне возможно, что изменение сервера могло вызвать проблему без изменения php. –
print_r используется для рекурсивной печати сложной переменной. Вы хотите просто напечатать, а не print_r. Итак, измените print_r на печать. Тогда очевидно, что одно из значений в массиве - это сам массив. Итак, хотя бы один раз, $ val является массивом. Вы не можете конкатенировать массив, как если бы это была строка. – kainaw