Başka bir PHP betiğinde exec() işlevini çağıran bir PHP betiğim var. Bu mükemmel çalışır, ancak NetBeans'de XDebug hata ayıklayıcısını kullanırken askıda kalıyor. Bu, uygulamanın tamamını ayıklayamadığım için her türlü soruna neden oluyor. İşte PHP Hata ayıklayıcı exec çağrılırken askıda kalıyor ('php ...')
önemsiz bir örnektir:test1.php
<?php
$output = array();
$status = 0;
exec('echo "Running inside test 1"', $output, $status);
exec('php ' . __DIR__ . '/test2.php', $output, $status); // Debugger hangs here
var_dump($output);
var_dump($status);
?>
test2.php
<?php
echo "Running inside test 2" . PHP_EOL;
?>
Ben koşmak test1.php, tamamlanıncaya kadar devam eder ve üretirse beklenen çıktı.
I hata ayıklaması test1.php, exec ('php ...') satırında kalıyor.
Bunu shell_exec ile denedim ve aynı sorunu yaşıyorum. Ayrıca, bir sorunla birlikte .sh dosyası veya başka bir yürütülebilir dosya üzerinde çalıştırmayı denedim.
İlk başta xdebug nasılsa çalıştırma sırasında ve bunu kilitleyerek başlatılan yeni PHP sürecine takılarak düşünüyordu, ama benim php.ini kontrol edilip xdebug.remote_autostart=off
var ettik.
Bir PHP betiğini exec() ile çağırmanın garip bir şey yapmanın bir yolu olduğunu biliyorum; Aslında gerçek kod tabanında çalıştırdığımız harici olarak sağlanan bir PHAR dosyasıdır, ancak yukarıdaki önemsiz örnek aynı belirtiye sahiptir, bu yüzden aynı sorun olduğunu varsayalım.
İlgili olması durumunda, PHP 5.5.13, Xdebug 2.2.3, Netbeans 7.3.1, Ubuntu 12.0.4 kullanıyorum.