ホームページ >バックエンド開発 >PHPチュートリアル >exec を使用して cmd コマンドを実行すると空が返されます
swftools の pdf2swf.exe ファイルを Web サイトのルート ディレクトリに置き、exec 関数を使用して php でコマンドを実行しました
$cmd = "c:/php/www/pdf2swf c:/php/www/upload/ 1.pdf c :/php/www/upload/1.swf"
exec($cmd);
このコードをコマンドラインに直接貼り付けると、正しく実行されます。php ではこのように呼び出すことができますが、 exec の最後の 2 つのパラメータが追加されました。2 番目のパラメータは array() で、3 番目のパラメータは失敗しました。その後、変更後、php ファイルをディレクトリに直接配置し、exec(pdf2swf 1.pdf) としました。 1.swf) は正常に実行できますか?理由を教えてください。
注: 上記のコード テストをサーバーに配置すると、すべて Windows 2003、オンライン使用では IIS、ローカル使用では Apache が発生しました。
ディスカッションへの返信(解決策)
まずマニュアルを読んでください。
exec() の 2 番目のパラメータは、画面によって返される情報です。
はい、この配列は空であり、画面には情報がありません。コマンドをコマンドラインに貼り付けて直接実行します
これはユーザー権限の問題であるはずです
php ファイルをディレクトリに直接置くことは成功します
推奨事項:
Web サイトのディレクトリを D ドライブに移動し、匿名ユーザーに実行権限を付与します
Web サイトを C ドライブに配置しないことで、システム ファイルが誤って破損するのを防ぐことができます。同時に、システムがクラッシュしたときの災害復旧の作業負荷ははるかに小さくなります
コマンドラインを手動で開くと、システム環境が引き継がれるため、ファイルを直接実行できます
pdf2swfの後に.exeを追加しましたが、まだ実行できません ipconfigを試してみましたが、このコマンドは問題ありません。パスに問題がある可能性があります。パスに問題があるので教えてください。
ただし、Web サイトのルートを C ドライブのルートに置くことはできないため、明らかに Web モードでは実行できません
提案:
Web サイトのディレクトリを D ドライブに移動し、匿名ユーザーに実行権限を付与します
Web サイトを C ドライブに配置しないことで、システムがクラッシュしたときにシステム ファイルが誤って破壊されるのを防ぐことができます。ディザスタリカバリははるかに小さいです
えー、モデレーター、Web サイトに置きました ルート ディレクトリは C ドライブのルート ディレクトリではありません
D:JGYJGY_WEBJGY_PHPinstall_package これは私の Web サイトのルート ディレクトリです
$ mcd
2 つの異なる変数名が表示されます
うーん、これが私が入力したものです 申し訳ありませんが、IE で cmd コマンドをエコーしました
D:JGYJGY_WEBJGY_PHPinstall_packageapppdf2swf.exe D:JGYJGY_WEBJGY_PHPinstall_packageuploadfile2012122220121222110 539946.pdf D:JGYJGY_WEB JGY_PHPinstall_packageuploadfile2012122220121222110539946.swf
一重引用符をもう一度試してください... この問題については考えず、ただ試してください
$cmd = "c:/php/www/pdf2swf c:/php/www/upload/1.pdf c:/php /www/upload/1.swf"
exec($cmd);
これは投稿内のコードです
情報を提供した場合、どのようにすれば実際の結果を得ることができますか?
$cmd = "c:/php/www/pdf2swf c:/php/www/upload/1.pdf c:/php/www/upload/1.swf"
exec($cmd); これは投稿内のコード
提供した情報で実際の結果を得るにはどうすればよいでしょうか?
申し訳ありませんが、プログラムでアドレスを取得したので、$cms 変数をエコーすると、このパスになります。 0539946。 pdf D: JGYJGY_WEBJGY_PHPinstall_packageuploadfile2012122220121222110539946.swf