2016-02-03 83 views
0

我使用MySQLConverterTool的cli.php將ext/mysql函數轉換爲ext/mysqli。如果我一次只轉換一個文件,它在命令行上可以正常工作,但我想要自動化該過程以轉換文件數組。腳本來自動化MySQLConverterTool的cli.php

我得到的PHP文件有: 查找/路徑/到/目標/目錄下的* .PHP> php_files.txt

這裏是我的process_cli.php腳本:在

#!/usr/bin/php 
<?php 
    $files = file('/path/to/php_files.txt'); 

    foreach ($files as &$file) 
    { 
     // cli.php -f $file -u; // returns "unexpected '$file' (T_VARIABLE)" 

     // echo $file; // works 

     shell_exec("php cli.php -f $file -u"); // returns "sh: 2: -u: not found" with no files converted 
} 
?> 

任何想法如何正確工作?在環路從var_dump($file)


結果:

string(35) "/home/bill/orderstatus/sync_db.php " ... string(48) "/home/bill/orderstatus/templates/searchForm.php " string(59) "/home/bill/orderstatus/templates/orderDetailRegistered.php " string(36) "/home/bill/orderstatus/database.php " string(33) "/home/bill/orderstatus/index.php " 
+0

你的'foreach'不工作?您必須擁有每個'$ file'的完整路徑才能對其執行操作。 –

+0

是的,該foreach正在工作;注意echo $文件;作品和$ files數組包含每個文件的完整路徑。 – Bill

+0

您是否嘗試過不通過參考傳遞文件? –

回答

0

得到這個工作。

我添加了一個str_replace來擺脫$ files條目中的尾部空格,並簡單地在f參數之前移動了u參數。

#!/usr/bin/php 
<?php 
    $files = file('/path/to/php_files.txt'); 

    foreach ($files as $file) 
    { 
    $file = str_replace(' ', '', $file); 
    shell_exec("/usr/bin/php cli.php -u -f $file"); 
    } 
?>