call jcsearch.bat with PHP or other...

User 26c54ae8b9

11-03-2008 12:54:51

Dear Chemaxon,





I'm trying to call jcsearch.bat with PHP, but i have no result (file not found).





I have copied all jchem repertories and file on my linux server and i call jcsearch.bat with full patch with "exec" PHP function.


example : exec( "/web/jchem/bin/jcsearch.bat ....options.... " ).





I have a linux server and a Mysql Database.





Could you help me please ?


If you know how to call jcsearch.bat with an other language, write me please.





Thanks,


Karim.

ChemAxon e274e1bada

12-03-2008 21:48:33

Karim,





If the php threw the file not found error, the path of jcserarch which you defined is wrong. Else you should check your classpath if your JDBC driver is included.


See this link: http://www.chemaxon.com/jchem/doc/admin/prepscripts.html





Edvard

User 26c54ae8b9

13-03-2008 10:57:21

Thanks for your response.


I will try and i will post if i have a problem.





Karim.

User 26c54ae8b9

17-03-2008 21:52:59

Dear Chemaxon,





It doesn't work....


I want to execute jcsearch.bat on a linux serveur.





---------------------------------------------------


I use Php file with the command :





system('jchem/bin/jcsearch.bat -q jchem/bin/3B.mol jchem/bin/3.mol --vaguebond:4 --charge:i -f sdf -o res.sdf',$res);





echo "<pre>" . $res . "</pre>\n";


------------------------------------------------------





When i try :


echo exec ('ls jchem/bin/jcsearch.*');





The command is OK, i have the jcsearch.bat file.





---------------------------------------------------


I have modified the jcsearch.bat :





if ["%JCHEMHOME%"]==[""] (


set JCHEMHOME="/jchem"





-----------------------------------------------------





It doesn't work, the function return the value $res="2", and i have no res.sdf file.


My serveur have no safe mode = on.





Can you help me please ? Must i do a chmod 777 on a file ? or ??????





Thanks





Karim.

ChemAxon e274e1bada

18-03-2008 16:46:20

Hi Karim,





does your jcsearch command run from command line?


You should not use the .bat extension on Linux.





PS:


Using jcsearch is not the most efficient way to search in a database, since


- a new Java Virtual Machine is started each time


- the structure cache is loaded for the whole table each time





If you have some Java experience using JSP would be much more efficient.





Please see our database JSP example:





http://www.chemaxon.com/jchem/examples/db_search/index.jsp





The source of this simple web application can be found in the jchem package under "examples/db_example" with installation instructions in "setup.html"





Regards,


Edvard

User 26c54ae8b9

18-03-2008 20:43:32

Thanks for your response,





I want to use jcsearch commande line on Linux.


if jcsearch is not a good solution, how to use it ? Only with file like sdf, mol... ?





Regards,





Karim.

ChemAxon e274e1bada

18-03-2008 21:45:02

Karim,





jcsearch is a simple but practical tool for testing and demonstrating JChem features, and it is possible to call that from a php code, but it is not the most efficient solution.





We recommend JSP to build a JChem based web application. (JSP (Java Server Pages) is a Java based script language similar as PHP) Please see the link what I wrote above, that is a freeware web application, which is part of JChem package. Feel free to modify it's source code.





Edvard

User 26c54ae8b9

18-03-2008 22:00:09

I have seen the link, and i thank you.


But i haven't a serveur with jsp...i can work only with Php.





I want to know how it doesn't work please...


The system function returns 127.





I have tested jcsearch on easy php on windows XP and it work fine, but not on linux.





Regards,


Karim.

ChemAxon aa7c50abf8

18-03-2008 22:54:31

The return code 127 means that the file you want to execute could not be found.





What does


Code:
echo exec ('ls -l jchem/bin/jcsearch');



give you? (Notice the missing '.*' at the and of the command.)





Thanks


Peter

User 26c54ae8b9

19-03-2008 18:42:30

When i execute echo exec ('ls -l jchem/bin/jcsearch');





I have this result :





-rwxrwxrwx 1 web89880 web89880 2650 Mar 10 20:05 jchem/bin/jcsearch

ChemAxon e274e1bada

19-03-2008 18:45:35

Karim,





did you try these?


Code:
system('jchem/bin/jcsearch -q jchem/bin/3B.mol jchem/bin/3.mol --vaguebond:4 --charge:i -f sdf -o res.sdf',$res);






Edvard

User 26c54ae8b9

19-03-2008 20:36:13

Edvard,





I'm sorry but it doesn't work.





when i execute in index.php :


system('jchem/bin/jcsearch -q jchem/bin/3B.mol jchem/bin/3.mol --vaguebond:4 --charge:i -f sdf -o res.sdf',$res);





echo "<pre>" . $res . "</pre>\n";





I have always value 127.





An another test :


When i delete $res in system function i have no result.





......





Karim.

ChemAxon aa7c50abf8

19-03-2008 21:17:14

At this point, I'd assume the exit code 127 is not for the jcsearch file itself.





Can you capture the standard error of the commands? If so I suggest to do the following:





1. Edit jcsearch putting the following line at the beginning:


Code:
set -x






2. Then execute


Code:
system('bash jchem/bin/jcsearch -h', ...);






What does this give you?





Thanks


Peter

User 26c54ae8b9

19-03-2008 23:01:33

Peter,





It's very strange...





I put : set -x at the beginning of jcsearch file.





When i execute command : system('bash jchem/bin/jcsearch -h', $res);





I have no result...a blank page...and $res=127.





I really don't undestand...i'm sorry.

ChemAxon aa7c50abf8

19-03-2008 23:17:56

One possible reason why the result is a blank page might be that the system PHP command doesn't display (by default?) the standard error. But I am just speculating here, because I am not familiar with PHP.





Peter

ChemAxon 9c0afc9aaf

20-03-2008 10:13:28

Karim,





Since none of us are PHP experts it might worth a try to ask for help on a forum dedicated to PHP issues.





Best regards,





Szilard